fe-interview icon indicating copy to clipboard operation
fe-interview copied to clipboard

[js] 第337天 解释下如下代码的意图:Array.prototype.slice.apply(arguments)

Open haizhilin2013 opened this issue 4 years ago • 4 comments

第337天 解释下如下代码的意图:Array.prototype.slice.apply(arguments)

我也要出题

haizhilin2013 avatar Mar 17 '20 20:03 haizhilin2013

  • 将arguments 类数组转换为数组

longhui520 avatar Mar 18 '20 12:03 longhui520

  • arguments 为类数组对象,并不是真正的数组。

  • slice可以实现数组的浅拷贝

  • 由于 arguments不是真正的数组,所以没有slice方法,通过apply可以调用数组对象的slice方法,从而将arguments 类数组转换为数组

wjbgis avatar Mar 19 '20 02:03 wjbgis

这个题目出的不太好 我想当然的认为arguments是一个形参了

function getArguments(){  
 //将参数转为一个数组  
 var args = Array.prototype.slice.apply(arguments);
  console.log(args)
} 
getArguments(11,12); // [11,22]

很明显的目的为,将函数内部可用的 arguments 对象 转化为一个真正意义上的数组

sz-p avatar Mar 19 '20 02:03 sz-p

arguments是类数组对象, Array.prototype.slice.apply(arguments)则是将类数组转换为数组。

xiaoqiangz avatar Sep 19 '22 08:09 xiaoqiangz

arguments是一个类数组对象,但是arguments原型链上没有slice方法,Array.prototype.slice.apply(arguments)数组上有slice方法,slice方法可接受一个类数组,通过apply来将this指向arguments

shengjie9 avatar Nov 10 '22 00:11 shengjie9