Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 带比较运算符的布尔表达式的类型_Javascript_Operator Precedence_Typeof - Fatal编程技术网

Javascript 带比较运算符的布尔表达式的类型

Javascript 带比较运算符的布尔表达式的类型,javascript,operator-precedence,typeof,Javascript,Operator Precedence,Typeof,typeof根据变量foo是否定义,计算结果为true或false 但是,如果foo!='未定义的“计算为true,则true的typeof应计算为'boolean'。 为什么它的计算结果是true或false?因为typeof和inquality操作符的优先级规则定义该表达式被解析为 if (typeof foo !== 'undefined') { // Now we know that foo is defined, we are good to go. } 有关更多信息,请参阅

typeof
根据变量
foo
是否定义,计算结果为
true
false

但是,如果
foo!='未定义的“
计算为
true
,则
true
typeof
应计算为
'boolean'

为什么它的计算结果是
true
false

因为
typeof
和inquality操作符的优先级规则定义该表达式被解析为

if (typeof foo !== 'undefined') {
    // Now we know that foo is defined, we are good to go.
}
有关更多信息,请参阅<代码>类型的优先级为16;质量优先。
typeof
的优先级越高,意味着它与操作数的“绑定”越紧密

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

作为参考,
typeof(typeof foo!=='undefined')
会按照OP的想法执行。
(typeof foo) !== 'undefined'