这是关于arguments
对象的“JavaScript,权威指南”中的核心JavaScript参考的引用:
在非严格模式下,Arguments对象有一个非常不寻常的特性。 当一个函数有命名参数时,该数组元素 Arguments对象是包含该局部变量的局部变量的同义词 函数参数。 Arguments对象和参数名称 提供两种不同的方式来引用同一个变量。更改 带参数名称的参数的值会更改该值 通过Arguments对象检索,并更改值 通过Arguments对象的参数更改了值 通过参数名称检索。
简单来说,这是什么意思?一个例子就是很棒。
答案 0 :(得分:1)
试试这个:
function x(a, b) {
arguments[1] = "foo";
console.log(b);
}
x("hello", "world");
您将在控制台中看到"foo"
。 arguments
对象具有类似于数组的属性,别名函数声明的形式参数。这意味着当您更改arguments[0]
时,这也会更改第一个显式声明的形式参数的值。 JavaScript中没有其他方法可以对变量进行别名,因此arguments
"异常"。