Javascript truthy相当于未定义,不是null而不是空字符串?

时间:2013-12-13 08:20:15

标签: javascript

我找到了以下遗留的Javascript代码:

function doSomething(parameter) {
    if (parameter != null && parameter != undefined && parameter != '') {
        ...
    }
}

我想知道它是否等于检查

if(parameter) {
    ...
}

即。如果等于检查参数是否真实。有不平等的情况吗?

4 个答案:

答案 0 :(得分:4)

不是不一样的。如果parameter = NaN您的IF为trueif(paramater)被评估为false

事实上:

var parameter = NaN;
if (parameter != null && parameter != undefined && parameter != '') {
    console.log("first if");
}
if(parameter) 
     console.log("second if");

只需记录first if

对于0false,两个IF会因parameter != ''的严格相等而导致相同的结果。

答案 1 :(得分:3)

检查有关转换为布尔部分

的链接

http://jibbering.com/faq/notes/type-conversion/

只有NaN0falsenullundefined''才会转换为false。< / p>

答案 2 :(得分:1)

在javascript中,很少有值转换为boolean false,否则几乎所有值都转换为true

undefined
The empty string ""
null
The number 0
The number NaN
The boolean false

所以最好有

if(!parameter)
{
  // your code
}

答案 3 :(得分:0)

这与您使用宽松比较!=不严格!==所以undefined == null'' == 0false == ''等等完全相同。

编辑:正如所指出的,它们并不完全相同。作为一般规则,您可以使用:

if (parameter != null) {

}

undefined == null在哪里检查两者。或者:

if (parameter) {

}

其中测试任何虚假值,例如nullundefined,空字符串,零......