在不同浏览器中的数组反向行为

时间:2019-02-07 21:17:14

标签: javascript arrays reverse

在Firefox的控制台中运行以下命令: Array.reverse([0,1]);

结果:[1,0]

在Chrome中再次运行:

Array.reverse is not a function

我尝试这样做的全部目的是,我想将数组反转为自身的副本,以免改变原始数组。我的问题:哪种浏览器行为正确?

在我看来since reverse() is supposed to be on Array.prototype,Firefox是错误的。但是,Firefox的行为更有用。这是Firefox的错误吗?

2 个答案:

答案 0 :(得分:3)

Firefox是Array's generics method于几年前在JS 1.6中引入的,但正如链接页面所述:

  

“这些不是ECMAScript标准的一部分,不支持它们   通过非Gecko浏览器。”

并且:

  

数组泛型是非标准的,已过时,并将在不久的将来删除。

因此,您应避免使用它们。

更重要的是,它不能解决您的问题。您说过要避免更改原始数组,但是Array.reverse(arr)arr.reverse()等效,因此无论如何都要对原始数组进行突变。

如果要避免这种情况,则应创建一个副本。如果您只需要浅拷贝,则可以执行以下操作:

let arr = [0, 1];
let reversed = [...arr].reverse();

console.log(arr, reversed); // [0, 1], [1, 0]

答案 1 :(得分:0)

sal在Chrome(以及某些其他浏览器,例如Safari)中不是静态方法。您应该这样:

Array.prototype.reverse