Javascript 简单布尔算术

Posted

技术标签:

【中文标题】Javascript 简单布尔算术【英文标题】:Javascript Simple Boolean Arithemetic 【发布时间】:2016-02-18 11:08:02 【问题描述】:

我听说过布尔运算并想尝试一下。

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

所以代数告诉我是真的=1

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

有人能解释一下为什么会这样吗?

【问题讨论】:

What is exactly the meaning of "===" in javascript?的可能重复 【参考方案1】:

=== 是严格相等运算符。请改用== 运算符。 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

【讨论】:

@SOReadytoHelp 编辑了我的答案。看看吧。【参考方案2】:

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

【讨论】:

【参考方案3】:

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

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

【讨论】:

【参考方案4】:

前 2 个表达式为真,因为您正在使用表达式 (true+true) (true-true) 它首先转换值的类型,因为表达式并使用“===”检查相等性,toNumbertoPrimitive 是内部方法转换它们的参数(在表达式期间)这是在表达式期间进行转换的方式

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

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

就是这样

【讨论】:

很抱歉我当时正在编辑我的答案,true+true 是一个表达式,我附上了图片来解释布尔值在表达式期间如何转换,你知道它是如何工作的吗?跨度>

以上是关于Javascript 简单布尔算术的主要内容,如果未能解决你的问题,请参考以下文章

plsql中的布尔算术

004-Shell 基本运算符算术运算符关系运算符布尔运算符辑运算符字符串运算符文件测试运算符

运算符

JavaScript(第四天)

具有多个输入的算术布尔代数

第一百节,JavaScript运算符