如果您查看typeof operand
,请访问MDN网站
Def:操作数是表示对象或基元
的表达式
我们知道1===1 // returns true
它是原始类型boolean
和
typeof true // always returns boolean
但是当我在代码下面运行时
console.log(typeof 1===1);

我不明白为什么它会返回false
而不是boolean
答案 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));