JS的短路运算&&和||

JavaScript的 && 和 || 的短路运算

&& 可以当做“且”、“and”来理解
|| 可以当做“或”、“or”来理解

使用 && 的时候,只要有一个为假,则结果为假,只有全部为真的时候,结果才为真。
|| 相反,只要有一个为真,结果就为真,反之,只有全部为假的时候,结果才为假。

可以把 && 看做是找假运算。找到假,直接停止,将假返回;找到真,则会继续找,直到找到假才停止,并将假返回。如果都为真,则返回最后一个真。

1
2
3
4
5
6
7
8
9
10
11
var a=0 && 'abcd' && 123 && false;
console.log(a);
//结果为0,因为找到第一个是0,为false,直接停止,将0返回
var b='abcd' && 0 && 123 && false;
console.log(b);
//结果为0,因为找到第二个是0,为false,停止查找,将0返回
var c='abcd' && 123 && true;
console.log(c);
//结果为true,因为前面几个都是真,所以一直找到最后一个真才返回

可以把||看做是找真运算。找到真,直接停止,将真返回;找到假,则会继续找,直到找到真才停止,并将真返回。如果都为假,则返回最后一个假。

1
2
3
4
5
6
7
8
9
10
11
var d = 'abcd' || 0 || 123 || false;
console.log(d);
//结果为abcd,因为找到第一个是字符串'abcd',为true,直接返回
var e = 0 || false || 123 || true;
console.log(e);
//结果为123,因为前面两个0和false都是假,所以一直找到123才返回
var f = '' || false || 0;
console.log(f);
//结果为0,因为前面几个都是假,所以一直找到最后一个假才返回

&& 优先级高于 ||

1
2
3
4
5
var g = (1 && 3 || 0) && 4;
console.log(g) //结果4
var h = 1 && 3 || 0 && 4;
console.log(h) //结果3