學習JS的心路歷程-宣告
變數
在程式中將一個值指定(assign)給一個符號式的容器(symbolic container),叫做一個變數(variable)。
宣告
在JS中目前提供了三種宣告方式:
var
宣告一個變數,可選擇是否給予一個初始值。
作用範圍(scope)於該函式之內;但是如果在函式外宣告,其作用範圍則為全域性性(global)。
var price = 10;
price = price * 2;
console.log(price);
let(ES6新增)
宣告一個記憶體塊範圍(scope)內的本地變數,可選擇是否給予一個初始值。
let prices = 10;
if(prices === 10){
let prices = 20;
console.log(prices);// 20
}
console.log(prices);// 10
const(ES6新增)
宣告一個只能讀取記憶體塊範圍(scope)內的本地變數。
const price = 10;
console.log(price);//10
price = 20;//Uncaught TypeError: Assignment to constant variable.
如果在宣告時候未給予值,JS會預設為undefined(除了const)
var a;
console.log(a)//undefined
let b;
console.log(b)//undefined
const c;
//Uncaught SyntaxError: Missing initializer in const declaration
命名規則
在命名時候需要注意下面幾點規則:
開頭不能數字
英文大小寫是有區分的
不可使用保留字元
在MDN中有列出了哪些是JS的保留字元。
函式
程式拆解成可重複使用的片段
具名程式碼片段(a named section of code)可以藉由名稱來呼叫執行。
可選擇是否接受引數(arguments即引數(parameters))
宣告
函式由三個關鍵字組成,依序是:
名稱
引數列表
大括號{}
這邊舉個例子:
function totalPrice(number,price){
return number*price
}
totalPrice(2,20)
函式totalPrice使用了兩個引數number和price,兩著相乘後透過return回傳其值。
函式通常會有回傳值,但並非每種函式都需要回傳值,也有可能利用輸出的方式來輸出結果。
function totalPrice(number,price){
console.log(number*price)
}
totalPrice(2,20)//40
在宣告函式時可以選擇不撰寫名稱,這將會使函式成為一個匿名函式,通常作為一個指定值,指定給一個變數後,該變數便成為了這個匿名函式的名稱。
var total = function(number,price){
console.log(number*price)
}
total(2,20)//40
以函式作為引數傳入
在JS中也能將函式做完引數傳入到另一個函式,而且在函式的最後也可以回傳函式。這種函式的結構稱之為高階函式(Higher-order function)。我們常聽到的callback就是高階函式的應用,不過這會在很後面才提到。在這邊只需要瞭解函式也能當作引數即可。
var total = function(count,fn){
return fn(count)
}
var price = function(count){
return count * 20
}
console.log(total(10,price))//200
參考資料:
變數、常數與命名
https://eyesofkids.gitbooks.io/javascript-start-from-es6/content/part3/function_scope.html
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Guide/Functions
https://developer.mozilla.org/zh-TW/docs/Web/JavaScript/Reference/Statements