Javascript Simple Boolean Arithemetic

时间:2015-11-17 06:53:35

标签: javascript

我听说过布尔算术,想过尝试一下。

alert (true+true===2)  //true
alert (true-true===0)  //true

所以代数告诉我true = 1

alert (true===1)  //false :O

有人可以解释为什么会这样吗?

4 个答案:

答案 0 :(得分:4)

===是严格的相等运算符。请尝试使用==运算符。 true==1将评估为true

  

严格等于运算符===只考虑它们相等的值   有相同的类型。宽松等于运算符==尝试   在比较严格之前转换不同类型的值   平等。

案例1:

true===1的情况下,数据类型true是布尔值,而类型1是数字。因此,表达式true===1将评估为false

案例2:

如果true+true===2true-true===0首先执行算术运算(因为+运算符优先于===See Operator Precedence),然后结果与其他操作数进行比较。

在计算表达式(true+true===2)时,算术运算true+true首先执行生成结果2.然后结果与另一个操作数进行比较。即(2==2)将评估为true

答案 1 :(得分:1)

因为比较数据类型和值(这是运算符'==='所做的),TRUE与1不完全相同。如果将其更改为TRUE == 1,它应该可以正常工作。

答案 2 :(得分:1)

前2个表达式为真,因为您使用表达式(true+true) (true-true)它首先转换值的类型,因为表达式并检查与“===”,toNumber和{的相等性{1}}是转换其参数的内部方法(在表达式期间),这是在表达式

期间进行转换的方式

enter image description here

这就是为什么true + true等于2

在你的第三个表达式中,你正在使用 === 这不转换参数只检查与类型相等,使两个值都为真,并且类型必须相同

多数人

答案 3 :(得分:1)

一开始,你正在做bool + bool。 +运算符优先于===运算符,因此首先计算它。在此评估中,它将布尔值转换为数字形式。运行console.log(true + true);,这将返回2.由于您将数字2与数字2进行比较,因此您将获得具有严格相等性的返回值true。

当你只是比较true === 1时,就像其他人说的那样,你将布尔值true与数字1进行比较,而这个数字并不严格相等。