回覆列表
  • 1 # 使用者8697445525252

    箭頭函式表示式的語法比函式表示式更短,並且不繫結自己的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

  • 中秋節和大豐收的關聯?
  • 怎麼看待家長對孩子望子成龍?