"不寻常" Arguments对象的功能

时间:2015-04-15 05:14:25

标签: javascript arguments

这是关于arguments对象的“JavaScript,权威指南”中的核心JavaScript参考的引用:

  

在非严格模式下,Arguments对象有一个非常不寻常的特性。   当一个函数有命名参数时,该数组元素   Arguments对象是包含该局部变量的局部变量的同义词   函数参数。 Arguments对象和参数名称   提供两种不同的方式来引用同一个变量。更改   带参数名称的参数的值会更改该值   通过Arguments对象检索,并更改值   通过Arguments对象的参数更改了值   通过参数名称检索。

简单来说,这是什么意思?一个例子就是很棒。

1 个答案:

答案 0 :(得分:1)

试试这个:

function x(a, b) {
  arguments[1] = "foo";
  console.log(b);
}

x("hello", "world");

您将在控制台中看到"foo"arguments对象具有类似于数组的属性,别名函数声明的形式参数。这意味着当您更改arguments[0]时,这也会更改第一个显式声明的形式参数的值。 JavaScript中没有其他方法可以对变量进行别名,因此arguments"异常"。