JavaScript 比较运算符
javascript comparison operators
我来自 python 背景,在做一个 JavaScript 项目后遇到了一个问题,其中
0 <5 <3
输出为 true我的猜测是它运行第一个运算符并完全忽略第二个运算符
和 python 它将渲染为 false。
我不关心如何让它工作,但奇怪的是它不在文档中,它只是暗示要做(0 猜猜我的问题是,如果有人能回答,为什么会这样
在 JavaScript 中,这个:
0 < 5 < 3
评估如下:
(0 < 5) < 3
翻译过来就是这样:
true < 3
进一步翻译成这一点(因为true
在数字上下文中1
):
1 < 3
这是真的。
然而,Python的设计方式不同。 如此处所述,它对此进行了解释:
0 < 5 < 3
等效于此:
0 < 5 and 5 < 3
上面的表达式可以进一步翻译为:
True and False
这是错误的。
这是一个逐步评估。当将数字和布尔值与 <
进行比较时,true 变为 1,0 变为 false。
0 < 5 < 3 // =>
true < 3 // =>
Number(true) < 3 // =>
1 < 3 // =>
true
请参阅规范 11.8.5 规则 3,其中描述了铸造ToNumber
。
3)如果不是Type(px)都是字符串而Type(py)都是字符串,那么
a) 让 nx 是调用 ToNumber(px) 的结果。因为 px 和 py 是原始的 值的求值顺序并不重要。
b) 让 ny 成为调用 ToNumber(py) 的结果。
在 JavaScript 中,关系运算符从左到右执行:
0 < 5
将是真的,即 1
,所以
0 < 5 < 3
翻译为:
1 < 3
这是真的。
另一方面,Python 中的比较操作具有相同的优先级。
同样与 C 不同的是,像
a < b < c
这样的表达式具有以下解释: 在数学中是约定俗成的。
相关文章:
- 字符串为零的JavaScript比较运算符
- 需要有关 HTML 中 Javascript 运算符比较的帮助
- JavaScript 中同一行上的多个比较/赋值运算符
- JavaScript 比较运算符中的不一致
- 使用空数组时比较运算符 JavaScript 的奇怪行为
- 比较运算符 !== 与 0
- 比较运算符在 javascript 中的数组上比较什么
- 将 JavaScript 比较运算符与变量一起使用
- 有没有办法使比较运算符成为变量
- JavaScript 比较运算符不起作用
- JavaScript 比较运算符未正确评估用户输入
- 我以前从未见过的比较运算符
- 链接数学比较运算符时javascript的奇怪行为
- 在条件中使用逻辑运算符和比较运算符(javascript)
- 使用“”对字符串进行排序;小于/大于“;比较器中的比较运算符
- 比较运算符-大于或等于-不工作
- Javascript 比较运算符 != vs !==.
- jQuery/Javascript的比较运算符"==="和“= =”
- JavaScript布尔表达式中的多个比较运算符
- Javascript:使用逻辑运算符和比较运算符