为什么 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"))
这更像是一个 '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"))