带有比较运算符的布尔表达式的类型
typeof of boolean expression with comparison operator
if (typeof foo !== 'undefined') {
// Now we know that foo is defined, we are good to go.
}
根据变量 foo
是否定义,typeof
的计算结果为 true
或 false
。
但是,如果 foo !== 'undefined'
的计算结果为 true
,则 true
的 typeof
的计算结果应为 'boolean'
。
为什么它的计算结果为 true
或 false
?
因为 typeof
和非质量运算符的优先规则定义该表达式被解析为
(typeof foo) !== 'undefined'
有关详细信息,请参阅 MDN page on operator precedence。 typeof
是优先级 16; inquality 的优先级为 10。typeof
的更高优先级意味着它 "binds" 与其操作数更紧密。
顺便问一下,为什么你的代码中有未定义的变量?
if (typeof foo !== 'undefined') {
// Now we know that foo is defined, we are good to go.
}
根据变量 foo
是否定义,typeof
的计算结果为 true
或 false
。
但是,如果 foo !== 'undefined'
的计算结果为 true
,则 true
的 typeof
的计算结果应为 'boolean'
。
为什么它的计算结果为 true
或 false
?
因为 typeof
和非质量运算符的优先规则定义该表达式被解析为
(typeof foo) !== 'undefined'
有关详细信息,请参阅 MDN page on operator precedence。 typeof
是优先级 16; inquality 的优先级为 10。typeof
的更高优先级意味着它 "binds" 与其操作数更紧密。
顺便问一下,为什么你的代码中有未定义的变量?