看Vue的官方文檔的時(shí)候看到這么個(gè)奇技淫巧.就是通過{length:20}來偽裝成為包含了20個(gè)undefined元素的數(shù)組arguments.舉個(gè)例子的話就是這樣: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函數(shù)在將第二個(gè)參數(shù)轉(zhuǎn)變?yōu)閍rguments時(shí)做了怎樣的處理?要知道new Array(20)或者[].length=20都不會往數(shù)組里面添加任何的內(nèi)容的,new Array(20).forEach(()=>console.log(1))也是不會打印任何內(nèi)容的.而為什么上述Vue官網(wǎng)的使用中卻能得到真正填充了undefined的數(shù)組?
JS為什么可以用{length:20}來偽裝成為20個(gè)undefined元素的arguments
繁星coding
2018-10-16 09:19:52