javascript中无表情语句的完整形式是什么?
Javascript从C中采用了一种语法,您可以在不检查任何内容的情况下执行逻辑检查:javascript中无表情语句的完整形式是什么?,javascript,Javascript,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') {
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
或未定义的,那么它就不存在):
我关心的是,如果该成员已定义,但定义为null
,在这种情况下(就我而言),它不会被分配
我知道,对于“truthy”值,无表达式语法返回true
。我对“真实”值不太感兴趣,因为它是一个实际值
“这相当于什么?”
这和你建议的任何一个都不一样。这相当于:
if (Boolean(foo)) { }
或者通过使用实现同样的功能代码>操作员:
if (!!foo) { }
或者,如果你真的愿意,你可以在比较中明确表示
if (!!foo === true) { }
“我询问的实际动机是希望确保成员“存在”
要查找对象中是否存在成员,请使用in
操作符
if ("devicePixelRatio" in window) { }
“…(也就是说,如果它为null或未定义,则它不存在:”
要检查与不存在不相同的非null
或未定义的,请执行以下操作:
if (window.devicePixelRatio != null) { }
=
操作员将同时执行null
和undefined
检查。任何其他值都将满足条件。请注意,如果定义了foo并等于0
@Cristy,则foo也会返回false。在这种情况下,它是一个有效值:)@IanBoyd,它是有效的,但如果未执行,则返回<代码>变量foo=0;if(foo)console.log(1)
将不输出任何内容,因此它与这些内容中的任何一个都不等效。我们刚刚了解到这一点。乐sigh@IanBoyd:是的,就像任何功能一样,人们应该了解它是如何工作的,并在适当的时候使用它。==
和的语义=
可能有点让人困惑,但这是一种非常简单且有用的特殊情况。除了null
和undefined
之外,没有任何内容是==null
或==undefined
。您可以配置jsHint来关闭该警告。
if ("devicePixelRatio" in window) { }
if (window.devicePixelRatio != null) { }