现在还是比较好理解的console.log全部是2,但是下面是比较诡异的:
这个时候arguments就不可以写了 全部是1了,这是为啥啊?
应该是浏览器优化后产生的效果...
可参考下面这篇文章[译] JavaScript 性能优化杀手
中对 arguments
这里的介绍.
http://www.w3ctech.com/topic/1474#3-arguments-
当 f1
中不使用 arguments
访问参数的时候, x
应该只是得到了值 1
, 所以后面的代码会输出的是 1.
当有使用 arguments
的时候, 那么参数名和 arguments
之间就有关系了, 所以在f2
中改变之后, x
也跟着变了.
像IE6
这种比较旧的浏览器, 运行上面的代码的效果:
因为IE6没有对代码进行优化, 忠实的保持着 参数
与 arguments
之间的联系, 所以在IE6下的效果是都会跟着变.