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"值.我对"真实"价值不太感兴趣,作为实际价值.
Run Code Online (Sandbox Code Playgroud)if (foo) { }"这相当于什么?"
它不等于你建议的任何一个.它相当于:
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在同一时间检查.任何其他值都符合条件.