JavaScript的reverse()总是会改变原始变量吗?

时间:2015-09-03 16:10:30

标签: javascript variables variable-assignment reverse

让我解释一下:

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");

在此示例中,当它应返回true时返回false,因为行var reverseArr = arr.reverse()不仅反转reverseArr而且反转arr,即原始变量,以及。那是为什么?

2 个答案:

答案 0 :(得分:5)

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

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

答案 1 :(得分:5)

  

为什么?

因为specification这样说:

  

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