我想了解为什么这种比较在 javascript 中不起作用

问题描述 投票:0回答:1

我在 JavaScript 中有一个 if 语句,问题(现在已修复,但我不知道为什么) 当参数 val1 和 val2 作为对象时,此代码有效:

if (typeof(val1) === typeof(val2) === 'object' && val1 !== null && val2 !== null) 

但是这段代码可以:

 if (typeof(val1) === 'object' && typeof(val2) === 'object' && val1 !== null && val2 !== null)

怎么样

typeof(val1) === 'object' && typeof(val2) === 'object' 

不同于:

typeof(val1) === typeof(val2) === 'object'

我特意询问聊天gpt,这就是答案,它有效,但我想知道为什么

问题似乎出在比较的结构上。表达式 typeof(val1) === typeof(val2) === 'object' 无法按预期工作,因为它从左到右计算。相反,尝试像这样分解它:

if (typeof(val1) === 'object' && typeof(val2) === 'object' && val1 !== null && val2 !== null) {
javascript comparison operators typeof
1个回答
0
投票

由于运算符优先级和结合性

typeof(val1) === typeof(val2) === 'object'

相当于

(typeof(val1) === typeof(val2)) === 'object'

首先评估

typeof(val1) === typeof(val2)
,返回
true
false
。这些都不可能等于字符串
'object'
,因此整个条件始终为
false

© www.soinside.com 2019 - 2024. All rights reserved.