【发布时间】:2015-09-15 09:56:51
【问题描述】:
我多次看到以下表达式:
var args = [].slice.call(arguments, 0);
但是[].slice.call([1,2,3,4,5], 0) 正好是[1,2,3,4,5]。
这不就是说
var args = arguments?
那么[].slice 到底是做什么的呢?
【问题讨论】:
-
它将函数参数转换为数组,以便您可以在其上使用数组原型方法。
-
关于第二部分的问题。我看到很多人在做
var args = [].slice.call(arguments, 0);。这种模式有什么好处而不是仅仅使用var args = arguments? -
阅读我上面的评论:它允许您使用数组原型方法。你不能
sort一个arguments对象,你不能filter一个arguments对象,你不能map一个arguments对象。不过,您可以使用 Array-slicedarguments对象来做到这一点。 -
所以基本上你正在为未来的数组方法准备参数,对吧?即使您没有在此功能范围内使用它,但它为您提供了未来的可扩展性。我的理解正确吗?
-
不确定我是否能正确解释您对“未来”一词的使用;你的意思是“在代码的后期”还是“在 ES6 成为标准的未来”?将
arguments对象转换为 Array 的核心是在其上使用只有 Array 对象才有的方法。
标签: javascript