评价为“假”

时间:2011-03-23 17:49:11

标签: javascript

我真的想要明确了解“评估为假”的含义,如:

默认情况下,Null的评估结果为

默认情况下,NaN评估为false

我认为这是相反的,就像Null意味着“空”所以因此它应该评估为真,如果某些东西是空的它是空的,是真的。如果它不为空,则null为false。因此,每当我为say:**somedata** == null写一个条件时,这是否意味着somedata不为空,因为null的计算结果为false?但是如果**somedata**为空,则null为真。

4 个答案:

答案 0 :(得分:2)

这意味着,如果你这样做

if(null)
{
  //this will never be hit
}

永远不会执行该块。

答案 1 :(得分:0)

哎呀,你正在扭曲我的大脑!

根据定义,“Null”值本身都是错误的。如果你问某些东西是否= Null,那么如果这个东西是== Null则表达式为true,如果不是则为false。

答案 2 :(得分:0)

有时,如果我对某种情况感到困惑,我会设置测试用例:

   var param1;
    var param2 = "";
    var param3 = "I'm a string";

    if (param1)
    {
         alert(param1);   //fails
    }

    if (!param1)
    {
        //alert(param1);   //success : undefined
    }

    if (param1 == undefined)
    {
        //alert(param1);   //success : undefined
    }

    if (param1 == null)
    {
        //alert(param1);   //success : undefined
    }

    if (param2)
    {
        //alert(param2); //fails
    }

    if (!param2)
    {
        //alert(param2);   //success : no value
    }

    if (param2 == undefined)
    {
        //alert(param2);   //fails
    }

    if (param2 == null)
    {
        //alert(param2);   //fails
    }

    if (param3)
    {
        //alert(param3); //success : im a string
    }

    if (!param3)
    {
        //alert(param3);   //fails
    }

    if (param3 == undefined)
    {
        //alert(param3);   //fails
    }

    if (param3 == null)
    {
        //alert(param2);   //fails
    }

http://jsfiddle.net/HbML8/1/

也许这有助于说明上述,正确,答案;)

喝彩!

答案 3 :(得分:0)

要理解“评估为假”的含义,请考虑在

之类的条件表达式中
if( condition ) { ... }

预计condition是布尔值,评估为truefalse。像

这样的东西
if( x == 3 ) { ... }

很好,因为您可以使用表达式x == 3并确定它是真还是假。像

这样的东西
if( null ) { ... }

原则上,不行,因为null不是布尔值。有些语言不允许这样做,有些语言决定在条件中看到null时,它会与false具有相同的效果。这就是“Null评估为假”的含义。

这是您需要担心将null解释为false的唯一情况。在其他示例中,您发布了:

if(**somedata** == null) { ... }

如果**somedata**为空,则会执行括号内的代码,如果**somedata**不是null则不会执行。 null不会将其值神奇地更改为truefalse。不需要转换,因为**somedata** == null已经是一个有效的布尔表达式。