我正在学习JavaScript,对arguments属性数组非常困惑。
我有一个函数,它接受一个参数并返回它。当我传递该参数并使用arguments[0] = value重新分配它时,它正在更新该值。
function a(b) {
arguments[0] = 2;
return b;
}
console.log(a(1)); //returns 2
但是,当我没有参数调用相同的函数时,它会返回undefined。
function a(b) {
arguments[0] = 2;
return b;
}
console.log(a()); //returns undefined
但是即使我通过了undefined,这个值也会更新。
function a(b) {
arguments[0] = 2;
return b;
}
console.log(a(undefined)); //returns 2
我认为,如果不将参数传递给JavaScript函数,它会自动创建该参数并将其赋值给undefined,更新后它应该会反映更新后的值,对吗?
a()和a(undefined)也是一样的,对吧?
发布于 2019-01-23 08:50:14
这是因为参数不像Array,它是一个具有整数索引数据键和属性长度的对象,如果长度等于零,就意味着没有参数
function a(b) {
arguments[0] = 2;
console.log(arguments.length)
return b;
}
a(1); // length 1 returns 2
console.log(a()); // length 0 returns undefined
https://stackoverflow.com/questions/54323086
复制相似问题