javascript - javacript 逻辑“与”和逻辑“或”
问题描述
我试图理解这段代码,但我无法编码:
"i" != e && "I" != e || ( console.log("inc"),fw -= 10)
console.log("------------------")
true && console.log("1 &&");
false || console.log("1 ||");
console.log("------------------")
false && console.log("2 &&");
true || console.log("2 ||");
“我”的例子
// "i" != e &&
// "i" != e == false
// the rest of the code should not be executed
// "I" != e ||
// "I" != e == true
// the rest of the code should not be executed
"i" != e && "I" != e || ( console.log("inc"),fw -= 10)
但在这两种情况下,它都使用“i”或“I”执行(console.log("inc"),fw -= 10)
我的问题是为什么会发生这种行为?
解决方案
它之所以有效,是因为&&
在之前执行||
。这不是因为运算符顺序,而是因为它具有更高的优先级值。(有关更多信息,请参阅MDN)
例如,假设e = "i"
and fw = 0
:
"i" != e && "I" != e || (console.log("inc"),fw -= 10)
false && <not evaluated> || (console.log("inc"),fw -= 10)
false || (console.log("inc"),fw -= 10)
false || -10
-10
当e = "I"
它是这样的:
"i" != e && "I" != e || (console.log("inc"),fw -= 10)
true && false || (console.log("inc"),fw -= 10)
false || (console.log("inc"),fw -= 10)
false || -10
-10
你也可以写得("i" != e && "I" != e) || (console.log("inc"),fw -= 10)
更清楚,但结果会保持不变。
推荐阅读
- javascript - 在 UI-Grid cellTemplate 中使用 {{COL_FIELD}}
- vba - 如果文件夹不在数据库中,则从文件夹访问导入数据
- python - 如何检测这个虚线?
- kubernetes - 如何升级 Docker Desktop for MacOS 中嵌入的 Kubernetes 版本?
- java - 如何从 GPSD 检索数据并在 Android 客户端中使用它们
- pycharm - pycharm 中的 Jupyter 笔记本在 Pycharm 中没有本地历史支持?
- java - Nativescript扩展java类生成未知构造函数
- mysql - 添加计算字段的结果
- python - 如何从我美丽的汤结果中删除标签(如:地址 = [a,b,c,d,r......])
- python - 访问字典中的熊猫面具