if (typeof foo !== 'undefined') {
// Now we know that foo is defined, we are good to go.
}
根据变量typeof
是否已定义,true
评估为false
或foo
。
但是,如果foo !== 'undefined'
评估为true
,那么typeof
的{{1}}应评估为true
。
为什么评估为'boolean'
或true
?
答案 0 :(得分:6)
因为typeof
和不等式运算符的优先级规则定义该表达式被解析为
(typeof foo) !== 'undefined'
有关详细信息,请参阅MDN page on operator precedence。 typeof
优先16;不等式优先级10. typeof
的优先级越高意味着它与其操作数“绑定”得更紧密。
顺便说一下,为什么你的代码中有未定义的变量?