问答详情
源自:7-4 小结

JavaScript 传参问题

foo(x,y,z){
'use strict';
arguments[0]=10;
console.log(x); 
}
foo(1,2);

输出x的值不是应该为1吗?课件上的输出为10是为什么呢?

提问者:请问你是3426834 2016-12-06 10:10

个回答

  • ZTON
    2016-12-06 19:16:34
    已采纳

    因为argumnets[0] 就是第一个参数,即x

  • 慕码人1183263
    2017-03-27 20:40:29

    在严格模式下,arguments变成了静态副本,和传入的参数没有绑定关系了,但是如果传入的参数是对象的话,修改arguments属性是会对传入参数属性会影响。比如:

    'use strict';
    !function(a){
    arguments[0].x = 100;
    console.log(a.x);//100  因为在严格模式下,如果传入的参数是对象的话,修改arguments属性是会对传入参数属性会影响的
    }(x:1);