我有以下JavaScript代码:
var a = 1;
var b = 1;
a === 1 // evaluates to true
b === 1 // evaluates to true
a == b == 1 // evaluates to true
a === b === 1 // evaluates to false
为什么a === b === 1
评估为false
?
答案 0 :(得分:3)
a == b == 1
评估为
((a == b) == 1)
由于a == b
为true
,因此表达式为
true == 1
由于==
会输入强制类型,因此会将true
转换为数字,该数字变为1.因此表达式变为
1 == 1
这就是为什么这个表达式是true
。您可以像这样确认布尔到数字的转换
console.log(Number(true));
// 1
console.log(Number(false));
// 0
类似地,
a === b === 1
评估为
((a === b) === 1)
所以
true === 1
由于===
没有输入强制类型(因为它是strict equality operator),因此该表达式为false
。