JavaScript:为什么更改参数变量会更改`arguments`“数组”?

时间:2012-04-19 02:50:37

标签: javascript

考虑:

> function hello(what) {
.     what = "world";
.     return "Hello, " + arguments[0] + "!";
. }
> hello("shazow")
"Hello, world!"

为什么更改what的值会更改arguments[0]的值?

1 个答案:

答案 0 :(得分:13)

  

“为什么更改what的值会更改arguments[0]的值?”

因为它是如何设计的。形式参数直接映射到arguments对象的索引。

那是,除非您处于严格模式,并且您的环境支持它。然后更新一个不会影响另一个。

function hello(what) {
    "use strict"; // <-- run the code in strict mode
    what = "world";
    return "Hello, " + arguments[0] + "!";
}
hello("shazow"); // "Hello, shazow!"