【发布时间】:2014-03-24 05:40:30
【问题描述】:
Javascript 从 C 中采用了一种语法,您可以在其中执行逻辑检查,而无需检查任何内容:
if (foo) {
}
这相当于什么?是吗:
if (foo != null) { }
if (foo !== null) { }
if (typeof(foo) != 'undefined') { }
if (typeof(foo) !== 'undefined') { }
if (typeof(foo) != 'object') { }
if (typeof(foo) !== 'Object') { }
我询问的实际动机是想确保一个成员“存在”(也就是说,如果它是null 或undefined,那么它不存在):
if (window.devicePixelRatio !== null)
if (window.devicePixelRatio != null)
if (!(window.devicePixelRatio == null))
if (!(window.devicePixelRatio === null))
if (!(window.devicePixelRatio == undefined))
if (!(window.devicePixelRatio === undefined))
if ((window.devicePixelRatio !== undefined))
我担心该成员是否已定义,但定义为null,在这种情况下(就我而言)它没有被分配。
我知道无表达式语法会为 "truthy" 值返回 true。我对作为实际值的 "truthy" 值不太感兴趣。
【问题讨论】:
-
请注意,如果 foo 已定义且等于
0,则它也会返回 false。 -
@Cristy 在这种情况下它是一个有效值:)
-
@IanBoyd,它是有效的,但
if没有被执行。var foo = 0; if(foo) console.log(1)不会输出任何内容,因此它不等同于其中任何一个。
标签: javascript