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

JS为什么可以用{length:20}来伪装成为20个undefined元素的arguments

JS为什么可以用{length:20}来伪装成为20个undefined元素的arguments

繁星coding 2018-10-16 09:19:52
看Vue的官方文档的时候看到这么个奇技淫巧.就是通过{length:20}来伪装成为包含了20个undefined元素的数组arguments.举个例子的话就是这样:function returnArguments(){    return arguments; } var args = returnArguments.apply(null,{length:20})console.log(args); //[undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined,  undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined]这背后的原理是怎样的? apply函数在将第二个参数转变为arguments时做了怎样的处理?要知道new Array(20)或者[].length=20都不会往数组里面添加任何的内容的,new Array(20).forEach(()=>console.log(1))也是不会打印任何内容的.而为什么上述Vue官网的使用中却能得到真正填充了undefined的数组?
查看完整描述

1 回答

  • 1 回答
  • 0 关注
  • 547 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信