【问题标题】:typeof of boolean expression with comparison operator带有比较运算符的布尔表达式的 typeof
【发布时间】:2017-05-27 20:51:59
【问题描述】:
if (typeof foo !== 'undefined') {
    // Now we know that foo is defined, we are good to go.
}

typeof 的计算结果为 truefalse,这取决于变量 foo 是否已定义。

但是,假设foo !== 'undefined' 计算为true,那么true 中的typeof 应该计算为'boolean'。 为什么它评估为truefalse

【问题讨论】:

    标签: javascript operator-precedence typeof


    【解决方案1】:

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

    (typeof foo) !== 'undefined'
    

    有关详细信息,请参阅MDN page on operator precedencetypeof 是优先级 16; inquality 是优先级 10。typeof 的更高优先级意味着它更紧密地“绑定”到它的操作数。

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

    【讨论】:

    • 作为参考,typeof (typeof foo !== 'undefined') 会按照 OP 的想法行事。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-20
    • 2011-12-31
    • 1970-01-01
    • 1970-01-01
    • 2021-02-13
    相关资源
    最近更新 更多