1. 程式人生 > >學習JS的心路歷程-聲明

學習JS的心路歷程-聲明

functions missing 輸出結果 我們 total initial ret err htm

變量

在程序中將一個值指定(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的心路歷程-聲明