无法判断我的浏览器控制台是否存在错误或正在发生什么,因为我从未遇到过使用反向功能的问题。
当我将以下内容扔进我的Chrome控制台时,
var a = ['one', 'two', 'three'];
var reversed = a.reverse();
console.log(a); // ['one', 'two', 'three']
console.log(reversed); // ['three', 'two', 'one']
答案 0 :(得分:0)
Array#reverse有效,无法创建新数组。这条线
var reversed = a.reverse();
撤消a
并设置reversed
以引用相同的数组。
在此示例中,您可以看到向reversed
添加项目也会影响a
,因为它们引用相同的数组:
var a = ['one', 'two', 'three'];
var reversed = a.reverse();
reversed.push(1000); // add something to reversed
console.log(a); // ['three', 'two', 'one', 1000]
console.log(reversed); // ['three', 'two', 'one', 1000]

要创建新数组,请在原始数组上使用Array#slice,然后反转数组:
var a = ['one', 'two', 'three'];
var reversed = a.slice().reverse();
console.log(a); // ['one', 'two', 'three']
console.log(reversed); // ['three', 'two', 'one']

答案 1 :(得分:0)
反向函数改变当前数组。在您将reversed
声明为a.reverse()
后,阵列a
也会发生变异。因此,您将['three', 'two', 'one']
和console.log(a)
console.log(reversed)
你想要做的是克隆一个:
var a = ['one', 'two', 'three'];
var reversed = a.slice().reverse();
console.log(a); // ['one', 'two', 'three']
console.log(reversed); // ['three', 'two', 'one']