为什么我的`if(result!==“false”)`返回true?

时间:2015-11-11 15:40:53

标签: javascript php

我进行ajax调用以获取数据。如果存在,例如结果设置我想运行另一个函数。

JS

success: function(result){ console.debug(result); console.log(result);
    if(result !== "false" || result !== ""){
        console.log('passed');    
    }

在控制台我有“通过”。

结果为空,但仍然是if语句的计算结果为true。为什么呢?

这是我发送的结果。它是空的......

PHP

$row = $stmt->fetch();
echo $row['objekt_nr'];

3 个答案:

答案 0 :(得分:2)

如果结果为"false",那么它不是空字符串,并且OR的右侧是真的。

如果结果为"",那么它不是"false",并且OR的左侧是真的。

如果是其他任何内容,那么OR语句的双方都是真的。

无论哪种方式,OR语句都是真的。

你想要一个AND而不是一个OR。

答案 1 :(得分:1)

条件result !== "false" || result !== ""将始终评估为真,因为结果最多只能是两个值中的一个。为了使条件为假,result必须同时为"""false"

例如:

  • 如果result === "false"result !== ""必须为真(结果为"false",而不是""

  • 如果result === ""result !== "false"必须为真(结果为"",而不是"false"

  • 如果结果既不是""也不是"false",那么双方都是真的,评估为真。

你究竟想要检查什么?

if(result !== "false" && result !== "")如果结果 "false"""

,则为真

if(result === "false" || result === "")如果结果为 "false"""

,则为真

答案 2 :(得分:1)

你的||需要成为&&。

陈述if (result !== "false" || result !== "")永远是真的!结果字符串同时不能同时"false""" ...这是语句可以解析为false的唯一方式。