Array.from(arguments)是创建参数数组的一种可接受的方法

Is Array.from(arguments) an acceptable way to create an array of arguments?

本文关键字:可接受 方法 一种 参数 arguments from 创建 Array 数组      更新时间:2023-09-26

在创建参数数组方面,Array.from(arguments)在某种程度上比Array.prototype.slice.call(arguments)差吗?我在任何地方都没有见过前者,而后者似乎是根据我所读到的内容创建自变量数组的标准方法。有人能解释其中的区别吗?

Array.from()是ES6指定的从任何类似数组的对象或可迭代对象创建Array对象的方法。

var arr = Array.from(arguments)

是一个教科书的例子,说明它的设计目的,它是为了取代以前的解决方案,如:

var arr = Array.prototype.slice.call(arguments)

唯一的问题是,这是ES6功能,因此仅在最新的浏览器中存在。为了在许多浏览器中安全使用它,您可以在MDN上安装像这里这样的polyfill,也可以使用BabelJS之类的东西将ES6代码转换为与ES5兼容的代码。

听起来Array.from(arg)是一种更好的方法,因为它正是这个函数应该做的

但是,此功能是新标准ECMAScript 6的一部分。根据MDN的说法,它还不是所有浏览器都支持的。

由于这是一种"实验性"函数,它仍然没有在任何地方使用。在可预见的未来,我们将看到Array.from的使用无处不在。

例如,有一些好的功能,如:

var str = "abcdef";
if (str.startsWith('abc') && str.endsWith('def'))

然而,如果你打开带有此功能的随机网站,那么你会看到一个自定义的自己编写的函数,它使用RegExp或indexOf。原因是所有这些网站都是在引入该标准之前编写的。

同时,许多开发人员更喜欢使用旧式函数,因为所有浏览器都支持这些函数。引入一个新标准并迁移到它总是很困难的。