What is the full form of an expressionless statement in javascript?
本问题已经有最佳答案,请猛点这里访问。
Javascript采用了C语言中的一种语法,您可以在不检查任何内容的情况下执行逻辑检查:
1 2 | if (foo) { } |
这等同于什么?它是:
1 2 3 4 5 6 | if (foo != null) { } if (foo !== null) { } if (typeof(foo) != 'undefined') { } if (typeof(foo) !== 'undefined') { } if (typeof(foo) != 'object') { } if (typeof(foo) !== 'Object') { } |
我提出请求的实际动机是想确保成员"存在"(也就是说,如果是
1 2 3 4 5 6 7 | 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)) |
我担心的是,如果成员被定义,但被定义为
我知道无表达式语法返回"truthy"值的
1
2 if (foo) {
}"What is this equivalent to?"
它不等同于你建议的任何一个。相当于:
1 | if (Boolean(foo)) { } |
或者使用
1 | if (!!foo) { } |
或者如果你真的想要的话,你可以在你的比较中表现得很明确。
1 | if (!!foo === true) { } |
"My actual motivation for asking is wanting to ensure that a member"exists"..."
要查找对象中是否存在成员,请使用
1 | if ("devicePixelRatio" in window) { } |
"... (that is to say, if it is null or undefined then it doesn't exist):"
要检查不存在与不存在的不存在的
1 | if (window.devicePixelRatio != null) { } |