JavaScript 坑与技巧:函数 arguments
2019-04-07 本文已影响0人
soojade
在非严格模式下,在函数开始执行时,
arguments
的长度和实参传递的个数是一致的,假如实参少于形参,多出的形参并不会和arguments
绑定,这些修改相互之间不影响。
function f(x, y, z) {
x = 100;
arguments[2] = 10; // 由于只传递两个实参,arguments[2]和z并无关联
z = 1; // 没有传递实参,和arguments无关联
console.log(arguments[0], arguments[1], arguments[2]);
console.log(arguments.length); // arguments 的长度取决于实参传递的个,后期修改无效
console.log(x, y, z);
}
f(3, 2);
结果如下;
100 2 10
2
100 2 1
在严格模式下,只有函数执行开始的相互映射,之后
arguments
和形参之间的修改互不影响。
function f(x, y, z) {
'use strict'
x = 100;
z = 1;
arguments[1] = 10;
console.log(arguments[0], arguments[1], arguments[2]);
console.log(x, y, z);
}
f(3, 2);
结果如下;
3 10 undefined
100 2 1
箭头函数
()=>{}
没有arguments
let fn = (i) => console.log(arguments);
fn(11);
结果报错:
ReferenceError: arguments is not defined