[转] JS运算符 &&和|| 及其优先级

时间:2023-03-08 18:13:15

第一、&& (逻辑与)运算,看一个简单的例子:

var a = 1 && 2 && 3;
var b = 0 && 1 && 2;
var c = 1 && 0 && 2;
console.log(a);//值为3
console.log(b);//值为0
console.log(c);//值为0

运行的结果是 :3,0,0。

解析:

“&&” 运算遇到false就返回;

变量a的计算:因为1 && 2,1为真,返回2;2&&3, 2为真,返回3 。

变量b的计算:因为0 && 1,0为假,返回0,不再往下计算。

第二、|| (逻辑或)运算,看一个简单的例子:

var d = 0 || 1 || 2;
var e = 1 || 0 || 2;
var f = 1 || 2 || 0;

console.log(d);//值为1
console.log(e);//值为1
console.log(f);//值为1

解析:

“||”运算遇到true就返回;

变量d的计算:因为0 || 1,0为假,返回1;1 || 2, 1为真,返回1 。

变量e的计算:因为1 || 0,1为真,返回1,不再往下计算。

三、&& (逻辑与) 和||(逻辑或)混合使用:

var g =  1 && 2 || 3;

var h = 1 || 2 && 3;

var i = 0 || 2 && 3;

console.log(g);//值为2
console.log(h);//值为1 

console.log(h);//值为3

解析:

&& (逻辑与) 优先级高于||(逻辑或);

变量g的计算:因为1 && 2,1为真,返回2;2 || 3, 2为真,返回2 。

变量e的计算:等式看成 1 || (一个值),1为真,最终直接返回1,不需要计算后边的等式的值。

变量i的计算:因为2 && 3,2为真,返回3;0 || 3,0为假,返回3。