箭頭函式表示式的語法比函式表示式更短,並且不繫結自己的this,arguments,super或new.target
這個函式表示式最適用於非方法函式,並且它們不能用作建構函式*基礎語法*/
(param1, param2, …, paramN) => { statements }
(param1, param2, …, paramN) => expression
// 如果只有一個引數,圓括號是可選的:
(singleParam) => { statements; }
singleParam => { statements; }
// 如果箭頭函式 無引數 , 必須使用 ()圓括號:
() => { statements; }
/*高階語法*/
//返回一個物件時,函式體外要加圓括號
params => ({foo: bar})
//支援剩餘引數和預設引數 注意:...rest必須是引數列表最後一個引數
(param1, param2, ...rest) => { statements }
//支援引數列表中的結構賦值
let f = ([a, b] = [1, 2], {x: c} = {x: a + b}) => a + b + c;
// a=1; b=2; x=c; c=a+b=3;
f(); // 6
箭頭函式的引入有兩個方面的作用:一是更簡短的函式書寫,二是對 this的詞法解析。
預設引數值
預設函式引數允許使用預設值初始化形式引數, 如果沒有值或未定義被傳入。
語法
function [name]([param1[ = defaultValue1 ][, ..., paramN[ = defaultValueN ]]]) {
statements
}
在JavaScript裡,函式引數預設是undefined。 然而,在某些情況下設定一個不同的預設值可能是有需要的。預設引數可以幫助解決這個問題。
過去,一般的設定預設引數的方法是在函式體測試引數是否為undefined,如果是的話就設定為預設的值。下面的例子中,如果在呼叫multiply時,引數b的值沒有提供,那麼b在函式體的值就為undefined。如果直接執行a*b,函式會返回 NaN。但是第二行程式碼解決了這個問題,它把b的值賦為1。
function multiply(a, b) {
b = typeof b !== "undefined" ? b : 1;
return a*b;
multiply(5); // 5
有了預設引數,我們不需要再在函式體內做不必要的檢查。現在你可以在函式頭將b的預設值置為1:
function multiply(a, b = 1) {
箭頭函式表示式的語法比函式表示式更短,並且不繫結自己的this,arguments,super或new.target
這個函式表示式最適用於非方法函式,並且它們不能用作建構函式*基礎語法*/
(param1, param2, …, paramN) => { statements }
(param1, param2, …, paramN) => expression
// 如果只有一個引數,圓括號是可選的:
(singleParam) => { statements; }
singleParam => { statements; }
// 如果箭頭函式 無引數 , 必須使用 ()圓括號:
() => { statements; }
/*高階語法*/
//返回一個物件時,函式體外要加圓括號
params => ({foo: bar})
//支援剩餘引數和預設引數 注意:...rest必須是引數列表最後一個引數
(param1, param2, ...rest) => { statements }
//支援引數列表中的結構賦值
let f = ([a, b] = [1, 2], {x: c} = {x: a + b}) => a + b + c;
// a=1; b=2; x=c; c=a+b=3;
f(); // 6
箭頭函式的引入有兩個方面的作用:一是更簡短的函式書寫,二是對 this的詞法解析。
預設引數值
預設函式引數允許使用預設值初始化形式引數, 如果沒有值或未定義被傳入。
語法
function [name]([param1[ = defaultValue1 ][, ..., paramN[ = defaultValueN ]]]) {
statements
}
在JavaScript裡,函式引數預設是undefined。 然而,在某些情況下設定一個不同的預設值可能是有需要的。預設引數可以幫助解決這個問題。
過去,一般的設定預設引數的方法是在函式體測試引數是否為undefined,如果是的話就設定為預設的值。下面的例子中,如果在呼叫multiply時,引數b的值沒有提供,那麼b在函式體的值就為undefined。如果直接執行a*b,函式會返回 NaN。但是第二行程式碼解決了這個問題,它把b的值賦為1。
function multiply(a, b) {
b = typeof b !== "undefined" ? b : 1;
return a*b;
}
multiply(5); // 5
有了預設引數,我們不需要再在函式體內做不必要的檢查。現在你可以在函式頭將b的預設值置為1:
function multiply(a, b = 1) {
return a*b;
}
multiply(5); // 5