JavaScript 传参问题

来源:7-4 小结

请问你是3426834

2016-12-06 10:10

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

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

写回答 关注

2回答

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

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

    请问你是34... 回复ZTON

    你说的对,回头看了看,那个use strict是后来加上的,输出的确是1。太感谢你了!

    2016-12-08 13:10:46

    共 2 条回复 >

  • 慕码人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);

    慕码人118...

    额,,不好意思,没有看清楚你的问题,忽略掉我的回答就是了

    2017-03-27 20:42:00

    共 1 条回复 >

JavaScript深入浅出

由浅入深学习JS语言特性,且解析JS常见误区,从入门到掌握

281101 学习 · 1020 问题

查看课程

相似问题