在不同的浏览器阵列的反向行为

问题描述 投票:2回答:2

运行在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的错误?

javascript arrays reverse
2个回答
3
投票

火狐推出年前Array's generics method,在JS 1.6,但在链接页面中提到:

“这些都不是的ECMAScript的标准组成部分,它们不是由非壁虎浏览器的支持。”

和:

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

因此,你应该避免使用它们。

更重要的是,它并没有解决问题。你说,你想避免改变原有的,但Array.reverse(arr)相当于arr.reverse(),所以你无论如何变异原始数组。

如果你想避免这种情况,你应该创建一个副本。如果你只需要一个浅拷贝,你可以这样做:

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

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

0
投票

Array.prototype.reverse不是在铬一个静态方法(和其他一些浏览器,例如Safari浏览器)。你应该做的是这样的:

console.log([0, 1].reverse());
© www.soinside.com 2019 - 2024. All rights reserved.