【发布时间】:2019-08-21 10:25:56
【问题描述】:
我正在尝试将 true+false 与 1 进行比较,即 true+false===1
过去,我尝试过以下方法:
true===1 //false
false===0 //false
true-true===0 //true
我希望输出为假,但实际输出为真。
【问题讨论】:
-
true+false 表示 1+0 为 1
我正在尝试将 true+false 与 1 进行比较,即 true+false===1
过去,我尝试过以下方法:
true===1 //false
false===0 //false
true-true===0 //true
我希望输出为假,但实际输出为真。
【问题讨论】:
true 和 false 在用于数学运算时被隐式类型转换为数字
注意:- 这里 + 是类型转换为数字
console.log(+true)
console.log(+false)
console.log(true+false)
所以
true + false === 1
其实是
1 + 0 === 1
【讨论】:
当你将两个布尔值相加时,由于布尔值不支持算术运算,而只支持逻辑运算,JS环境只是将它们转换为数字。所以 1+0===1。但是如果你做 true ===1,这是类型敏感的,它会导致 false。如果你做 true == 1,那就是真的。因为这不是类型敏感的,类型转换将由 JS 环境完成。
【讨论】: