为什么typeof = = 1返回false而不是boolean

时间:2017-03-16 13:35:39

标签: javascript

如果您查看typeof operand,请访问MDN网站 Def:操作数是表示对象或基元
的表达式 我们知道1===1 // returns true它是原始类型boolean
typeof true // always returns boolean

但是当我在代码下面运行时



console.log(typeof 1===1);




我不明白为什么它会返回false而不是boolean

4 个答案:

答案 0 :(得分:38)

由于typeof运算符的优先级高于===

  • 第一个操作实际上是typeof 1,返回"number"
  • 下一个操作是"number" === 1,返回false,因为显然 string不是number

如果你想让它发挥作用,请使用里面的括号来处理比较(1 === 1) 首先然后检查其类型。



console.log(typeof (1 === 1));




更多信息 MDN Operator precedence

答案 1 :(得分:16)

typeof运算符的优先级高于===,因此表达式 typeof 1===1被解释为(typeof 1)===1

  • typeof运算符返回一个字符串; (typeof 1)计算字符串'number'

  • 由于显而易见的原因,
  • 'number' === 1评估为false

请参阅MDN atricle on operator precedence in Javascript

作为另一个例子,通过类比,typeof 1+1会产生字符串'number1'

答案 2 :(得分:6)

由于运算符优先级,表达式的计算结果为(typeof 1)===1。那不是true

答案 3 :(得分:4)

尝试使用

console.log(typeof (1 === 1));