1.2.3.10.'arguments' 與 spread

  • 參數 (arguments)

    • 函數執行時自動建立好

  • 在JavaScript中, 參數可以選擇要不要傳入

    境, 放到執行堆中

  • 如同前述的範圍鏈, 當執行環境被建立時會產生幾樣東西:

    • 1.變數環境 (Variable environment), 外部環境 (Outer environment)

      • 當在變數環境找不到變數時, 會到所參照的外部環境去尋找

    • 2.this

      • 不須宣告, 由JavaScript engine產生, this依據函數的呼叫方式會指向不同的物件

    • 3.arguments

      • 包含所有傳入函數的參數

function greet(firstname, lastname, language){
    console.log(firstname);
    console.log(lastname);
    console.log(language);
}

//印出:
//undefined
//undefined
//undefined
//因為hoisting的緣故, 參數會在執行環境被建立時被給予初始值undefined
greet();

//印出:
//'John'
//undefined
//undefined
greet('John');

//預設函數的寫法

//1.不是每個瀏覽器都支援的做法
function greet(firstname, lastname, language = 'en'){
    console.log(firstname);
    console.log(lastname);
    console.log(language);
}

//2.預設參數的做法
function greet(firstname, lastname, language){
    //如果language是undefined就會被強制轉型為false
    language = language || 'en';
    console.log(firstname);
    console.log(lastname);
    console.log(language);
}

function greet(firstname, lastname, language){
    //如果language是undefined就會被強制轉型為false
    language = language || 'en';
    if (argements.length === 0){
        return;
    }
    console.log(firstname);
    console.log(lastname);
    console.log(language);
    console.log(argements);
}

//印出:
//'John'
//undefined
//undefined
//['John'] (array-like)
greet('John');

Last updated