isPalindome-在`else-if(str.length===2)return str[0]===str[1]`



我理解第三个条件,但不理解第二个

关于第二条件-如果";str";为2(意味着它有2个字符(,则返回"0";str[0]==str[1]";但是如果最后两个字符不同呢;c"g";大概

return str[0] === str[1]中的比较是如何执行的?因为if((语句返回true,所以比较必须在if((函数内部吗?

但是,这行return str[0] === str[1]在if((语句的范围之外,返回true或false

function isPalindrome(str) {
// 1st Conditional
if (str.length === 1) return true 
// 2nd Conditional
else if (str.length===2) return str[0]===str[1] 

// 3rd Conditional
else if (str[0] === str.slice(-1)) {
return isPalindrome(str.slice(1,-1))
}
return false
}

return "str[0] === str[1]",但如果最后两个字符不同呢"c"g";大概

此语句将返回一个布尔值。该布尔值由str[0] === str[1]确定。这是一个错误或正确的比较。在示例";cg";,该比较将计算为false,因此return语句将使函数返回值false

return str[0] === str[1]中的比较是如何执行的?

它像在任何其他上下文中一样执行。表达式为str[0] === str[1],该求值的结果由return语句返回。

因为if()语句返回true,所以比较必须在if()语句内部吗?

return应仅在前一个if语句为true时执行,即return应仅在字符串长度为true时才执行。

但是,这行return str[0] === str[1]if()语句的范围之外,返回true或false

该语句不在if语句的范围之外。它是一个仅在if条件为true时执行的语句。

如果有帮助的话,我们可以将if (str.length===2) return str[0]===str[1]重写如下:

if (str.length===2) {
let isPalindromeOfTwo = str[0]===str[1];
return isPalindromeOfTwo;
}

甚至(但这是一个反模式(:

if (str.length===2) {
if (str[0]===str[1]) {
return true; // It is a palindrome of 2
} else {
return false; // Not a palindrome
}
}

只要意识到一个比较代表一个:一个布尔值。此值可以在任何需要值的上下文中使用。例如,您可以执行以下任何操作:

console.log(str[0]===str[1]); // output will be "false" or "true"
let x = str[0]===str[1]; // x will be a boolean value: false or true
let y = Number(str[0]===str[1]); // y will be a number, 0 or 1

最新更新