學習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
學習JS的心路歷程-聲明