在 if 语句中,undefined 等于 false

新手上路,请多包涵

我对下面的代码感到困惑:

 if(undefined){
   //code will not be executed
}

if(!undefined){
   //code will be executed
}

这是否意味着“未定义”等于假?

这里的 问题 相关,但没有一点以上情况。

原文由 Xheldon Cao 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.1k
2 个回答

这意味着 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

如果你否定一个虚假的价值,你会得到真实的:

 !""        === true
!null      === true
!undefined === true
!0         === true
!NaN       === true

当你唠叨一个真实的价值时,你会得到错误的:

 !"hello" === false
!1       === false

但是 undefined 不等于 false

 undefined === false // false
undefined  == false // false

只是为了好玩,如果它:

 undefined == null // true

原文由 Andreas Louv 发布,翻译遵循 CC BY-SA 4.0 许可协议

在 javascript 严格模式下, undefined 不是假的,但 javascript 尝试将对象或 var 转换为 boolean 值(这在 javascript 中称为 真值),这就是你得到的原因一个 undefined 为假。例如,null 也会发生这种情况。

你可以用这个严格的不平等来强制:

 if(undefined!==false) console.log("Is not false");

原文由 Christopher Díaz 发布,翻译遵循 CC BY-SA 3.0 许可协议

推荐问题