Xhe*_*Cao 9 javascript if-statement undefined
我对以下代码感到困惑:
if(undefined){
//code will not be executed
}
Run Code Online (Sandbox Code Playgroud)
和
if(!undefined){
//code will be executed
}
Run Code Online (Sandbox Code Playgroud)
这是否意味着"未定义"等于假?
这里的问题有关,但没有人指出上述情况.
and*_*lrc 20
这意味着这undefined是一个虚假值,虚假值列表是:
"" # 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
Run Code Online (Sandbox Code Playgroud)
如果你否定了一个虚假的价值,你将会成真:
!"" === true
!null === true
!undefined === true
!0 === true
!NaN === true
Run Code Online (Sandbox Code Playgroud)
当你唠叨真正的价值时,你会得到假的:
!"hello" === false
!1 === false
Run Code Online (Sandbox Code Playgroud)
但undefined不相等false:
undefined === false // false
undefined == false // false
Run Code Online (Sandbox Code Playgroud)
只是为了好玩,如果它:
undefined == null // true
Run Code Online (Sandbox Code Playgroud)
小智 5
在javascript strict模式下,undefined不是false,但是javascript尝试将对象或var转换为一个boolean值(这在javascript truthy值中调用),这就是你得到undefinedfalse 的原因.例如,这也发生在null.
你可以强迫这个严格的不平等:
if(undefined!==false) console.log("Is not false");
Run Code Online (Sandbox Code Playgroud)