Javascript 评价为;假;

Javascript 评价为;假;,javascript,Javascript,我真的在努力对“评估为错误”时的含义有一个坚定的理解,比如: 默认情况下,Null的计算结果为false 默认情况下,NaN的计算结果为false 我认为它会是相反的,比如Null意味着“空”,因此它应该求值为true,如果某个东西为Null,那么它是空的,true。如果不为空,则null为false。所以,每当我为say编写一个条件:**somedata**==null,这是否意味着somedata不是空的,因为null的计算结果为false?但是如果**somedata**为空,则null为

我真的在努力对“评估为错误”时的含义有一个坚定的理解,比如:

默认情况下,Null的计算结果为false

默认情况下,NaN的计算结果为false


我认为它会是相反的,比如Null意味着“空”,因此它应该求值为true,如果某个东西为Null,那么它是空的,true。如果不为空,则null为false。所以,每当我为say编写一个条件:
**somedata**==null
,这是否意味着somedata不是空的,因为null的计算结果为false?但是如果
**somedata**
为空,则null为真。

这意味着如果您这样做

if(null)
{
  //this will never be hit
}
这个区块永远不会被执行。

哎哟,你把我的脑袋扭来扭去了


根据定义,“Null”值本身就是false。如果您询问某物是否为==Null,那么如果某物为==Null,则表达式为true;如果不是,则表达式为false。

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

   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
    }

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

干杯
if( condition ) { ... }
预计
条件
是一个布尔值,其计算结果为
true
false
。差不多

if( x == 3 ) { ... }
很好,因为您可以采用表达式
x==3
,并确定它是真是假。差不多

if( null ) { ... }
原则上,不可以,因为
null
不是布尔值。有些语言不允许这样做,有些语言决定,只要它们在某个条件下看到
null
,就会产生与
false
相同的效果。这就是“Null计算结果为false”的含义

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

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

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

噢,天哪,有什么混淆。如果null为空,那么什么是
[]
?这个答案对你有帮助吗?接受规则,不要想太多,好吧,我现在开始明白了。你是对的,我在javascript中看到默认情况下null为false。感谢您花时间详细解释空值与布尔值的区别和/或比较(有时“理解”)实际上,它不是布尔值。Bosworth99,这是一个很好的例子。我从这个论坛得到了最好的答案。我打印出这一页作为参考。我感谢大家的时间!谢谢!