在if语句中,undefined等于false

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)

  • 我很震惊 `undefined == false` 给出了 `false`!怎么会?我可以在哪里阅读相关内容? (3认同)

小智 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)