0%

JS的 && 和 || 同时使用的思考

结论

&& 和 || 是没有优先级的,代码从左到右执行

代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
//以下代码,T:true,F:false,
const a = 1, b = 2, c = 3;
if (a === 1 && b === 2 || c === 30) {//T && T || F => T
console.log("1-1")
} else {
console.log("1-2")
}
if (a === 1 && b === 20 || c === 3) {//T && F || T => T
console.log("2-1")
} else {
console.log("2-2")
}
if (a === 1 && b === 20 || c === 30) {//T && F || F => F
console.log("3-1")
} else {
console.log("3-2")
}
if (a === 10 && b === 2 || c === 3) {//F && T || T => T
console.log("4-1")
} else {
console.log("4-2")
}
if (a === 10 && b === 20 || c === 3) {//F && F || T => T
console.log("5-1")
} else {
console.log("5-2")
}
if (a === 10 && b === 2 || c === 30) {//F && T || F => F
console.log("6-1")
} else {
console.log("6-2")
}
if (a === 1 && b === 2 && c === 30) {//T || T && F => F
console.log("7-1")
} else {
console.log("7-2")
}

短路

  • 表达式1 && 表达式2 || 表达式3
  • 表达式1 || 表达式2 && 表达式3

代码都是从左到右执行,
如果是 表达式1 && 表达式2 || 表达式3,
当 表达式1 && 表达式2 为 true 时;表达式3不会执行;

如果是 表达式1 || 表达式2 && 表达式3,
当 表达式1 && 表达式2 为 false 时;表达式3不会执行。