2012-04-19 111 views

回答

12

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

因为这就是它的设计原理。形式参数直接映射到参数对象的索引。

也就是说除非严格模式是,和你的环境支持它。然后更新一个不会影响另一个。

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

哦......在这种情况下:为什么它的设计是以这种方式工作?那么设计是否在任何地方记录? (不是我不相信你,当然,我只是想了解更多的细节) – 2012-04-19 02:54:32

+0

哦,等等,我们开始吧:http://www.ecma的* 10.6 Arguments Object *中的“NOTE 1” -international.org/publications/files/ECMA-ST/Ecma-262.pdf – 2012-04-19 02:56:09

+0

@DavidWolever:该语言是ECMAScript规范中的文档。在ECMAScript 5中引入了严格模式。 – 2012-04-19 02:56:36

相关问题