如果我将false和!==替换为true和===,该函数将给出意外的结果。有什么解释吗?

时间:2018-09-06 23:59:54

标签: javascript palindrome

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,在false内将true和true替换为false,则该函数无法按预期工作,有人可以告诉我为什么吗?

1 个答案:

答案 0 :(得分:1)

让我在一个例子中说明它

假设我们已经装满了装满白色和黑色大理石的盒子。并声明:“盒子中仅包含白色大理石”。您如何确定该陈述是正确的?好吧...(在for循环中)一个接一个地挑选大理石,然后检查它们是否都是白色的。如果您发现一个不是(!==)的语句,则说明语句是假。您的功能正在执行此操作。

您想要的方式-具有切换的运算符和真实值-它将像这样:“我会选择一种大理石,如果它是 IS 白色(===)< / strong>,我知道该声明为 true 。”现在...是真的吗?不,不是。

知道了吗? (在您的情况下,您不是要检查黑白大理石,而是要检查字符是否相等)