首页 > 解决方案 > 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)

我的问题是为什么会发生这种行为?

标签: javascript

解决方案


它之所以有效,是因为&&在之前执行||。这不是因为运算符顺序,而是因为它具有更高的优先级值。(有关更多信息,请参阅MDN

例如,假设e = "i"and fw = 0

  1. "i" != e && "I" != e || (console.log("inc"),fw -= 10)
  2. false && <not evaluated> || (console.log("inc"),fw -= 10)
  3. false || (console.log("inc"),fw -= 10)
  4. false || -10
  5. -10

e = "I"它是这样的:

  1. "i" != e && "I" != e || (console.log("inc"),fw -= 10)
  2. true && false || (console.log("inc"),fw -= 10)
  3. false || (console.log("inc"),fw -= 10)
  4. false || -10
  5. -10

你也可以写得("i" != e && "I" != e) || (console.log("inc"),fw -= 10)更清楚,但结果会保持不变。


推荐阅读