Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/472.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javascript中无表情语句的完整形式是什么?_Javascript - Fatal编程技术网

javascript中无表情语句的完整形式是什么?

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') {

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
未定义的,那么它就不存在):

我关心的是,如果该成员已定义,但定义为
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) { }