【ES6入門07】:函數擴展

函數擴展

函數參數的默認值

{
    function test(x, y = 'world') {
        console.log(x, y);
    }
    test('hello'); // hello world
    test('hello', 'can'); // hello can
}

參數的做用域

{
    let x = 'hi';
    function test2(x, y = x) {
        console.log(x, y);
    }
    function test3(a, y = x) {
        console.log(a, y);
    }
    test2('can'); // can can
    test3('can'); // can hi
}

rest的參數

{
    // ...arg將全部參數轉換爲數組 ...表示rest參數
    function test4(...arg) {
        for (let v of arg) {
            console.log(v);
        }
    }
    test4(1, 2, 3, 'a'); // 1  2  3  'a'

    // 擴展運算符
    console.log(...[1, 2, 4]); // 1 2 4
}

箭頭函數

{
    let fn = arg => arg * 2; // 只有一個參數能夠省略()
    let fn2 = () => 5; // 沒有參數寫()
    // 當返回值爲對象時,用()包住返回值,否則會報錯
    let fn3 = (name, age) => ({name, age});
    console.log(fn(3)); // 6
    console.log(fn2()); // 5
    console.log(fn3('can', 18)); // {name: "can", age: 18}
    // 注意,使用箭頭函數時,注意this的指向
}

函數尾調用

{
    // 判別是否函數尾調用的方法:函數的最後一個語句是否是一個函數
    // 當函數嵌套過多,當一個函數依賴另外一個函數時,可以使用尾調用優化性能
    function test(x) {
        console.log(x);
    }
    function fn(x) {
        return test(x); // 尾調用,最後的語句是函數
    }
    fn(123); // 123
}
相關文章
相關標籤/搜索