带比较运算符的布尔表达式的typeof

时间:2017-01-12 16:35:15

标签: javascript operator-precedence typeof

if (typeof foo !== 'undefined') {
    // Now we know that foo is defined, we are good to go.
}

根据变量typeof是否已定义,true评估为falsefoo

但是,如果foo !== 'undefined'评估为true,那么typeof的{​​{1}}应评估为true。 为什么评估为'boolean'true

1 个答案:

答案 0 :(得分:6)

因为typeof和不等式运算符的优先级规则定义该表达式被解析为

(typeof foo) !== 'undefined'

有关详细信息,请参阅MDN page on operator precedencetypeof优先16;不等式优先级10. typeof的优先级越高意味着它与其操作数“绑定”得更紧密。

顺便说一下,为什么你的代码中有未定义的变量?