Javascript 在if语句中,undefined等于false
我对下面的代码感到困惑:Javascript 在if语句中,undefined等于false,javascript,if-statement,undefined,Javascript,If Statement,Undefined,我对下面的代码感到困惑: if(undefined){ //code will not be executed } 及 这是否意味着“未定义”等于false 此处相关,但上面没有一点指出。这意味着未定义的是一个错误值,错误值列表如下: "" // Empty string null // null undefined // undefined, which you get when doing: var a; false // Bool
if(undefined){
//code will not be executed
}
及
这是否意味着“未定义”等于false
此处相关,但上面没有一点指出。这意味着
未定义的是一个错误值,错误值列表如下:
"" // Empty string
null // null
undefined // undefined, which you get when doing: var a;
false // Boolean false
0 // Number 0
NaN // Not A Number eg: "a" * 2
如果你否定一个错误的值,你会得到正确的结果:
!"" === true
!null === true
!undefined === true
!0 === true
!NaN === true
当你唠叨一个真实的价值观时,你会变得虚假:
!"hello" === false
!1 === false
但是undefined
不等于false
:
undefined === false // false
undefined == false // false
只是为了好玩,如果:
undefined == null // true
在javascript严格模式下,undefined
不是false,但是javascript尝试将对象或变量转换为boolean
值(这在javascripttruthy value中调用),这就是将undefined
设置为false的原因。例如,null也会发生这种情况
您可以强制使用以下严格的不平等:
if(undefined!==false) console.log("Is not false");
请查看以下检查的falsy值:
""==false?
Ans: true
null == false?
Ans: false
undefined == false?
Ans: false
0 == false?
Ans: true
NaN == false?
Ans: false
null == NaN?
Ans: false
我们可以看到null==false
,undefined==false
,null==NaN
,和NaN==false
都不是true
这意味着他们不平等。根据上述结果,我们得到了3个falsy值组:
虚假群体
空组和
南集团
但负的falsy值总是正确的:
!"" === true
!null === true
!undefined === true
!0 === true
!NaN === true
例如:
检查true
变量的dataTitle
值
if(dataTitle && (dataTitle != null))
{
console.log('hi');
}
if(!dataTitle)
{
console.log('hi');
}
//or
if(dataTitle==null || dataTitle===false)
console.log('hi');
上面的语句将检查false组和null组
检查false
变量的dataTitle
值
if(dataTitle && (dataTitle != null))
{
console.log('hi');
}
if(!dataTitle)
{
console.log('hi');
}
//or
if(dataTitle==null || dataTitle===false)
console.log('hi');
Javascript中undefined
的真实值为false
。因此,您看到的行为。Boolean(未定义)
是false
。但是您的注释应该是interchanged@FastSnail这是不是意味着if语句将切换内部传递给它的每个参数?我的意思是,就像这样:`if(Boolean(parameter)){//code}`,对吗?@XheldonCao如果您传递一个非布尔值,那么是。javascript使用Boolean()
函数获取布尔值,因为if条件需要一个布尔值value@FastSnail现在我知道了,谢谢你们!我很震惊,undefined==false
给出了false
!怎么会?我在哪里能读到它?@Marecky网站上有一篇很好的评论