JavaScript's reverse()总是改变原始变量吗?

Does JavaScript's reverse( ) always change the original variable?

本文关键字:改变 原始 变量 reverse JavaScript      更新时间:2023-09-26

让我解释一下:

function PalindromeTwo(str) {
  str = str.split('');
    var arr = [];
    str.forEach(function(it){
      if( (/[a-z]/i).test(it) ){
          arr.push(it);
        }
    })
    var reverseArr = arr.reverse();
    return reverseArr.join('').toUpperCase() === arr.join('').toUpperCase();
}
PalindromeTwo("hello, there");

在这个例子中,当它应该返回false时,它返回true,因为var reverseArr = arr.reverse()行不仅逆转了reverseArr,而且逆转了arr,即原始变量。为什么呢?

是的,reverse将数组反转到位。您可以在反转之前使用slice创建一个副本。

var copy = arr.slice();
copy.reverse();

为什么?

因为规范这么说:

数组中的元素被重新排列,以便颠倒它们的顺序。对象作为调用的结果返回。