在MDN的JavaScript的教學,一開始就說了,JavaScript是具有一級函式(First-class functions)的輕量級程式語言,函式相信大家都了解,那究竟甚麼是一級函式,它有什麼重要性?
在JavaScript中,除了基礎型別(Primitive Type)之外的型別都可以視為物件型別(Object Type),包括函式。
函式作為物件,意味著,函式能實現物件的功能,這個觀念非常特別,也非常重要。
有哪些功能?
let getValue = function () {}
let ary = [];
ary.push(function () {})
let obj = {
prop: function () {}
}
function getValue() {
return function () {}
}
function greeting(name) {
console.log(`Hello!${name}`);
}
function processUserInput(callbackfn) {
let name = 'Mary';
callbackfn(name);
}
processUserInput(greeting);
callback function有很多地方需要討論,之後會另開篇幅。
有程式設計基礎後,下一個議題就是學習如何使用函式,函式可以讓我們重複使用相同的邏輯,方面管理程式碼。
函式在JavaScript中占有無比重要的地位,我們必須得了解函式有哪些形式,才能在面對不同的情境來使用。
let x = 10;
let y = 20;
function getValue() {
let sum = x + y;
console.log(sum);
}
getValue(); //30
x與y皆為全域變數,sum為區域變數,這不是一個好的方法,這個範例只是單純做示範。
function getValue(x, y) {
let sum = x + y;
console.log(sum);
}
getValue(10, 20); //30
跟剛剛的例子比起來,這個好多了,所有變數皆為區域變數,當函式執行完,區域變數的生命週期也隨之消失,不會占用記憶體空間。
function getValue(x, y) {
return x + y;
}
let sum = getValue(10, 20);
console.log(sum);
這種方式很常用,我們常需要函式做完運算後,把結果傳給另一個變數,再接續處理。
let x = 10;
let y = 20;
function getValue() {
return x + y;
}
let sum = getValue(10, 20);
console.log(sum); //30
以上就是函式的各種形式,在我們了解更進階的函式觀念之前,應該要把基礎的應用學好才是正確的學習途徑。