JavaScript 基礎知識 7 箭頭函式,基礎知識
箭頭函式,基礎知識
建立函式還有另外一種非常簡單的語法,並且這種方法通常比函式表示式更好。
它被稱為“箭頭函式”,因為它看起來像這樣:
let func = (arg1, arg2, ...argN) => expression
……這裡建立了一個函式 func,它接受引數 arg1..argN,然後使用引數對右側的 expression 求值並返回其結果。
換句話說,它是下面這段程式碼的更短的版本:
let func = function(arg1, arg2, ...argN) {
return expression;
};
讓我們來看一個具體的例子:
let sum = (a, b) => a + b;
/* 這個箭頭函式是下面這個函式的更短的版本:
let sum = function(a, b) {
return a + b;
};
*/
alert( sum(1, 2) ); // 3
可以看到 (a, b) => a + b 表示一個函式接受兩個名為 a 和 b 的引數。在執行時,它將對錶達式 a + b 求值,並返回計算結果。
如果我們只有一個引數,還可以省略掉引數外的圓括號,使程式碼更短。
例如:
let double = n => n * 2;
// 差不多等同於:let double = function(n) { return n * 2 }
alert( double(3) ); // 6
如果沒有引數,括號將是空的(但括號應該保留):
let sayHi = () => alert("Hello!");
sayHi();
箭頭函式可以像函式表示式一樣使用。
例如,動態建立一個函式:
let age = prompt("What is your age?", 18);
let welcome = (age < 18) ?
() => alert('Hello') :
() => alert("Greetings!");
welcome();
一開始,箭頭函式可能看起來並不熟悉,也不容易讀懂,但一旦我們看習慣了之後,這種情況很快就會改變。
箭頭函式對於簡單的單行行為(action)來說非常方便,尤其是當我們懶得打太多字的時候。
多行的箭頭函式
上面的例子從 => 的左側獲取引數,然後使用引數計算右側表示式的值。
但有時我們需要更復雜一點的東西,比如多行的表示式或語句。這也是可以做到的,但是我們應該用花括號括起來。然後使用一個普通的 return 將需要返回的值進行返回。
就像這樣:
let sum = (a, b) => { // 花括號表示開始一個多行函式
let result = a + b;
return result; // 如果我們使用了花括號,那麼我們需要一個顯式的 “return”
};
alert( sum(1, 2) ); // 3
更多內容
在這裡,我們讚揚了箭頭函式的簡潔性。但還不止這些!
箭頭函式還有其他有趣的特性。
為了更深入地學習它們,我們首先需要了解一些 JavaScript 其他方面的知識,因此我們將在後面的 深入理解箭頭函式 一章中再繼續研究箭頭函式。
現在,我們已經可以用箭頭函式進行單行行為和回調了。
總結
對於一行程式碼的函式來說,箭頭函式是相當方便的。它具體有兩種:
不帶花括號:(...args) => expression — 右側是一個表示式:函式計算表示式並返回其結果。
帶花括號:(...args) => { body } — 花括號允許我們在函式中編寫多個語句,但是我們需要顯式地 return 來返回一些內容。