今天,我想來點 Functions。
Overview:
在 JS,functions
console.log(typeof function greeting(){ ... }); // "function"
較早的 JS function 長得像這樣,也就是函式陳述式。
function awesomeFunction(coolThings) {
...
return amazingStuff;
}
函式的 identifier (awesomeFunction) 與函式的值之間的關聯,在 compile (編譯) 時期會建立起來,也就是在執行之前,函式的 identifier 與函式的 value 的關係,已經確定了。
另外一種定義函式的方法,就是函式表達式。
var awesomeFunction = function(coolThings) {
...
return amazingStuff;
};
函式表達式最大的特徵,就是有 assign operator '=',將等號右邊的匿名函式,assign 給左邊的變數 (還記得在 JS,函式就是 values 嗎?)。不同於函式陳述式,函式表達式的 identifier 與函式的 value 要等到執行時期才會有關聯,這與 hoisting 有關係。
因為在 JS,函式就是 value,所以也可以當作物件的 property
var whatToSay = {
greeting() {
console.log('Hello!');
},
question() {
console.log('What is your name?');
},
answer() {
console.log('I am Cheryl.');
}
}
greeting(), question(), 和 answer() 三個函式,由 whatToSay 物件來管理,因此想取得其中的 value,用 whatToSay.greeting() 就可以取得 greeting 的 value。
在 JS,functions 還有許多種格式,可以參考這裡。
今天份的學習到這邊。
[ 參考 ]