Javascript采用了一种语法,您可以在其中执行逻辑检查,而无需检查任何内容:
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”值不太感兴趣,作为实际值。
答案 0 :(得分:6)
if (foo) { }
“这相当于什么?”
它不等同于您建议的任何一个。它等同于:
if (Boolean(foo)) { }
使用!
运算符或相同的事情:
if (!!foo) { }
或者如果你真的想要,你可以在比较中明确。
if (!!foo === true) { }
“我的实际动机是要确保成员”存在“......”
要查找对象中是否存在成员,请使用in
运算符。
if ("devicePixelRatio" in window) { }
“...(也就是说,如果它为null或未定义,则它不存在):”
要检查不是null
或undefined
,这与不存在相同,请执行以下操作:
if (window.devicePixelRatio != null) { }
!=
运算符会同时执行null
和undefined
检查。任何其他值都符合条件。