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

Ian*_*oyd 7 javascript

Javascript采用了一种语法,您可以在其中执行逻辑检查,而无需检查任何内容:

if (foo) { 
}
Run Code Online (Sandbox Code Playgroud)

这相当于什么?是吗:

if (foo != null) { }
if (foo !== null) { }
if (typeof(foo) != 'undefined') { }
if (typeof(foo) !== 'undefined') { }
if (typeof(foo) != 'object') { }
if (typeof(foo) !== 'Object') { }
Run Code Online (Sandbox Code Playgroud)

我要求的实际动机是要确保成员"存在"(也就是说,如果它存在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))
Run Code Online (Sandbox Code Playgroud)

我担心的是,如果成员被定义,但被定义为null,在这种情况下(据我所知),它没有被分配.

我知道无表情语法返回true一个"truthy"值.我对"真实"价值不太感兴趣,作为实际价值.

coo*_*ter 6

if (foo) { 
}
Run Code Online (Sandbox Code Playgroud)

"这相当于什么?"

它不等于你建议的任何一个.它相当于:

if (Boolean(foo)) { }
Run Code Online (Sandbox Code Playgroud)

或使用!运算符相同的事情:

if (!!foo) { }
Run Code Online (Sandbox Code Playgroud)

或者如果你真的想要,你可以在比较中明确.

if (!!foo === true) { }
Run Code Online (Sandbox Code Playgroud)

"我提出的实际动机是要确保成员"存在"..."

要查找对象中是否存在成员,请使用该in运算符.

if ("devicePixelRatio" in window) { }
Run Code Online (Sandbox Code Playgroud)

"...(也就是说,如果它为null或未定义,则它不存在):"

要检查not,null或者undefined与不存在相同,请执行以下操作:

if (window.devicePixelRatio != null) { }
Run Code Online (Sandbox Code Playgroud)

!=运营商将同时执行null,并undefined在同一时间检查.任何其他值都符合条件.