那些逐步掌握的JavaScript('arguments')

JavaScript中有一个隐藏属性可以访问参数,甚至改变参数。那就是arguments。

 

arguments也分不同情况下的执行情况,比如一般模式,严格模式。下面我们就几种不同举例说明。(本篇实质也算上一篇的延续)

 

 

一.通过arguments改变形参

 

!function(a){
  arguments[0]=100;  //改变了形参1的值
  console.log(a);  // 100
}(1);  

 arguments是个伪数组,即通过下标访问参数。

 

 

 

注:上代码使用了立即调用执行函数

!function(){}();

这只是其中之一的写法,立即调用执行函数有其他很多种写法。 

 

 

 

二.不传参时,在use strict下修改形参

 

!function(a){
  'use strict';  
  arguments[0]=100; 
  console.log(a);  // undefined
}();  //未传参

 上述代码中,我们可看,并未传参。

 

 

此处有两个要点:

1.当参数不传时默认是undefined,即使通过arguments手动修改依然是undefined。

2.当在严格模式下 arguments 已成为参数的静态副本,无论传不传都不会给参数造成影响。

 

 

 

三.参数为对象,在use strict下修改形参

 

!function(a){
   'use strict';
   arguments[0].x =100;
   console.log(a.x);   //100
}({x:1});

 参数为对象(共享传递)时通过arguments,即使在use strict中改变依然会生效。

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值