【问题标题】:Is Array.from(arguments) an acceptable way to create an array of arguments?Array.from(arguments) 是创建参数数组的可接受方式吗?
【发布时间】:2016-02-17 04:05:36
【问题描述】:

Array.from(arguments) 在某些方面比 Array.prototype.slice.call(arguments) 创建参数数组更糟糕吗?我还没有看到前者在任何地方使用过,而后者似乎是根据我读过的内容创建参数数组的标准方法。有谁能解释一下区别吗?

【问题讨论】:

    标签: javascript arrays arguments


    【解决方案1】:

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

    var arr = Array.from(arguments)
    

    是它的设计目的的教科书示例,旨在替代以前的解决方法,例如:

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

    唯一的问题是这是 ES6 功能,因此只存在于最新的浏览器中。要在许多浏览器中安全地使用它,您可以安装像 one here on MDN 这样的 polyfill,或者您可以使用 BabelJS 之类的东西将 ES6 代码转换为 ES5 兼容代码。

    【讨论】:

      【解决方案2】:

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

      但是,此功能是 a new standard ECMAScript 6 的一部分。根据MDN的说法,目前还不是所有浏览器都支持。

      由于它是一种“实验性”功能,它仍然没有在任何地方使用。在可预见的未来,我们会看到Array.from的使用无处不在。

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

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

      但是,如果您打开具有此功能的随机网站,您将看到一个使用 RegExp 或 indexOf 的自定义自己编写的函数。原因是所有这些网站都是在引入此标准之前编写的。

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-06-26
        • 2011-11-28
        • 2011-08-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-04-21
        相关资源
        最近更新 更多