我真的想要明确了解“评估为假”的含义,如:
默认情况下,Null的评估结果为
默认情况下,NaN评估为false
我认为这是相反的,就像Null意味着“空”所以因此它应该评估为真,如果某些东西是空的它是空的,是真的。如果它不为空,则null为false。因此,每当我为say:**somedata** == null
写一个条件时,这是否意味着somedata不为空,因为null的计算结果为false?但是如果**somedata**
为空,则null为真。
答案 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
}
也许这有助于说明上述,正确,答案;)
喝彩!
答案 3 :(得分:0)
要理解“评估为假”的含义,请考虑在
之类的条件表达式中if( condition ) { ... }
预计condition
是布尔值,评估为true
或false
。像
if( x == 3 ) { ... }
很好,因为您可以使用表达式x == 3
并确定它是真还是假。像
if( null ) { ... }
原则上,不行,因为null
不是布尔值。有些语言不允许这样做,有些语言决定在条件中看到null
时,它会与false
具有相同的效果。这就是“Null评估为假”的含义。
这是您需要担心将null
解释为false
的唯一情况。在其他示例中,您发布了:
if(**somedata** == null) { ... }
如果**somedata**
为空,则会执行括号内的代码,如果**somedata**
不是null
则不会执行。 null
不会将其值神奇地更改为true
或false
。不需要转换,因为**somedata** == null
已经是一个有效的布尔表达式。