为什么 javascript 'if statements' return 未定义?

Why does javascript 'if statements' return undefined?

这更像是一个 'why does this happen' 问题,而不是解决问题的问题。

我正在尝试创建一个函数来测试一个单词是否是回文。我最初认为我可以使用一个 if 语句来比较这个词以及它何时被反转。但是 if 语句给了我未定义的。当我定期比较它时(word === reverseWord),它返回的是真或假。我的问题是 if 语句中发生了什么,因为它确实会消失?谢谢!

const palindromes = function(word) {
    *//Turn word into an array*
    var arrWord = Array.from(word);
    *//Reverse the array*
    var reversedWord = arrWord.reverse();

    *//This is true*
    return arrWord === reversedWord;

    //But this is undefined?
    if (arrWord === reversedWord) {true} else {false};
}

它 return 未定义,因为您没有在任何地方使用 return 关键字。

您犯的另一个错误是,您正在比较两个引用内存中相同对象的数组,它 arrWord === reversedWord 将始终 return true.

使用 split('')reverse()word 转换为数组。然后 join('')。最后比较反转字符串和 word

const palindromes = function(word) {
    var reversedWord = word.split('').reverse().join('');
    console.log(word === reversedWord);
    if (word === reversedWord) {
      return true
    } else {
      return false
    };
}

console.log(palindromes("aba"))
console.log(palindromes("ba"))

代码可以减少到一行。

const palindromes = (word) => word.split('').reverse().join('') === word 

console.log(palindromes("aba"))
console.log(palindromes("ba"))