下面直接上代碼函數
// 只傳第一個參數,第二參數不傳
function a (x, y) {
arguments[1] = 10;
console.log(x + y);
}
a(1);// 打印的是undefined
a(1, 2); // 打印的是11
- 結論
- 這個y參數和arguments的內存空間是獨立,可是他們的值是同步的
- 此外需注意,若是y參數不傳,即便設置arguments[1]的值,也不會反應到y這個命名參數中,這是由於arguments對象的長度是由傳入的參數個數所決定的,不是由定義函數時的命名參數個數所決定的,因此第一次傳一個參數時會返回undefined