foo(x,y,z){
'use strict';
arguments[0]=10;
console.log(x);
}
foo(1,2);
输出x的值不是应该为1吗?课件上的输出为10是为什么呢?
因为argumnets[0] 就是第一个参数,即x
在严格模式下,arguments变成了静态副本,和传入的参数没有绑定关系了,但是如果传入的参数是对象的话,修改arguments属性是会对传入参数属性会影响。比如:
'use strict';
!function(a){
arguments[0].x = 100;
console.log(a.x);//100 因为在严格模式下,如果传入的参数是对象的话,修改arguments属性是会对传入参数属性会影响的
}(x:1);