Javascript Simple Boolean Arithemetic
我听说过布尔算术,想试试看。
1 2 | alert (true+true===2) //true alert (true-true===0) //true |
所以代数告诉我真=1
1 | alert (true===1) //false :O |
有人能解释为什么会这样吗?
The strict equality operator
=== only considers values equal if they
have the same type. The lenient equality operator== tries to
convert values of different types, before comparing like strict
equality.
案例1:
在
案例2:
在
在计算表达式
一开始,你在做bool+bool。+运算符优先于==运算符,因此首先对其进行计算。在这个评估中,它将布尔值转换为它们的数字形式。运行
当你在比较
前2个表达式是真的,因为您使用的是表达式
这就是为什么真+真等于2
在第三个表达式中,您使用的是==这不是转换参数,只需检查类型是否相等,以使值和类型都为真。
这一切
因为比较数据类型和值(这是运算符"==="所做的),所以true与1不完全相同。如果您将此更改为true==1,它将正常工作。