如果我将 false 和 !== 替换为 true 和 === 该函数会产生意想不到的结果。有什么解释吗?
If i replace false and !== with true and === the function gives unexpected results. Any explanation?
function palindrome(str) {
var len = str.length;
for ( var i = 0; i < Math.floor(len/2); i++ ) {
if (str[i] !== str[len - 1 - i]) {
return false;
}
}
return true;
}
如果我将 for 循环内的 !== 和 false 替换为 ===,将 true 和外部的 true 替换为 false,则该函数无法按预期工作 有人可以告诉我为什么吗?
让我举个例子来说明
假设我们已经覆盖了装满白色和黑色弹珠的盒子。还有一个声明:"The box contains only white marbles"。您如何确定该陈述是真实的?好吧……你一颗一颗地挑选弹珠(在 for 循环中)并检查它们是否都是白色的。如果你发现 不是 (!==),你就知道 是假的。而您的功能正在执行此操作。
您想要的方式 - 使用切换运算符和真值 - 它会像这样: "I will pick one marble and if it IS white (===), I know the statement is true." 现在......真的是这样吗?不,不是。
明白了吗? (在你的情况下,你不是在检查黑白弹珠,而是检查字符是否相等)
function palindrome(str) {
var len = str.length;
for ( var i = 0; i < Math.floor(len/2); i++ ) {
if (str[i] !== str[len - 1 - i]) {
return false;
}
}
return true;
}
如果我将 for 循环内的 !== 和 false 替换为 ===,将 true 和外部的 true 替换为 false,则该函数无法按预期工作 有人可以告诉我为什么吗?
让我举个例子来说明
假设我们已经覆盖了装满白色和黑色弹珠的盒子。还有一个声明:"The box contains only white marbles"。您如何确定该陈述是真实的?好吧……你一颗一颗地挑选弹珠(在 for 循环中)并检查它们是否都是白色的。如果你发现 不是 (!==),你就知道 是假的。而您的功能正在执行此操作。
您想要的方式 - 使用切换运算符和真值 - 它会像这样: "I will pick one marble and if it IS white (===), I know the statement is true." 现在......真的是这样吗?不,不是。
明白了吗? (在你的情况下,你不是在检查黑白弹珠,而是检查字符是否相等)