为了账号安全,请及时绑定邮箱和手机立即绑定

JavaScript 传参问题

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

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

正在回答

2 回答

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

0 回复 有任何疑惑可以回复我~
#1

ZTON

回头看了下,课件上输出10 是老师在6-4节讲解时的结果,结果不是use strict 模式下的。 use strict 模式的结果是口头说的
2016-12-06 回复 有任何疑惑可以回复我~
#2

请问你是3426834 提问者 回复 ZTON

你说的对,回头看了看,那个use strict是后来加上的,输出的确是1。太感谢你了!
2016-12-08 回复 有任何疑惑可以回复我~

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

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

0 回复 有任何疑惑可以回复我~
#1

慕码人1183263

额,,不好意思,没有看清楚你的问题,忽略掉我的回答就是了
2017-03-27 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
JavaScript深入浅出
  • 参与学习       281102    人
  • 解答问题       1020    个

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

进入课程

JavaScript 传参问题

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信