Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/398.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 为什么typeof 1===1返回false而不是boolean_Javascript - Fatal编程技术网

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

Javascript 为什么typeof 1===1返回false而不是boolean,javascript,Javascript,如果您查看操作数的类型,请访问网站 Def:操作数是表示对象或原语的表达式 我们知道1===1//返回true它是一种基本类型boolean和 typeof true//始终返回布尔值 但当我在代码下面运行时 console.log(typeof 1==1)由于运算符的优先级高于=: 第一个操作实际上是typeof 1,它返回一个“number” 下一个操作是“number”==1,返回false,因为显然字符串不是数字 如果要使其正常工作,请先使用括号处理比较(1==1),然后检查其类型

如果您查看操作数的类型,请访问网站 Def:操作数是表示对象或原语的表达式
我们知道
1===1//返回true
它是一种基本类型
boolean

typeof true//始终返回布尔值

但当我在代码下面运行时

console.log(typeof 1==1)由于运算符的优先级高于
=

  • 第一个操作实际上是
    typeof 1
    ,它返回一个
    “number”
  • 下一个操作是
    “number”==1,返回false,因为显然
    字符串
    不是
    数字
如果要使其正常工作,请先使用括号处理比较
(1==1)
,然后检查其类型


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

  • typeof
    操作符返回一个字符串
    (typeof 1)
    计算结果为字符串
    “number”

  • 由于明显的原因,
    'number'==1
    计算结果为
    false



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

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

尝试使用

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

您正在将
类型的字符串
1
进行比较。这永远不会相等,因为
1
是一个
数字
。typeof的优先级高于comparison,因为
==
是一个严格的值比较
typeof 1
是“number”,因此您要严格比较字符串值“number”和数值1@Kinduser很抱歉,我这么做是因为Alex在修改答案之前首先回答了与运算符优先级有关的问题,Vincent只是为了澄清,“Javascript从左到右读取代码”这有点误导。正如其他答案所指出的,这与运算符优先级有关。显然,
4+5*6
按预期返回
34
,而不是
54
。不,是运算符,就像
+
*
一样。恰好
typeof
的优先级高于
==
,因此首先执行它
1===typeof 1
将表现出相同的行为。您可以查看MDN上的以说服自己。感谢您指出。。。。