说明
我们常说的是 与运算 只有表达式都为 true 时,才返回 true,否则返回 false(口诀:全真才真,一假则假)
理解误区:&& || 直接返回的是布尔值?
与运算 &&
答案是否定的:在与运算符在计算过程中,自左向右执行判断表达式,若当前表达式转为布尔值为false,则返回当前表达式的值否则将会继续执行,直到最后一个表达式,不再进行判断直接返回该表达式的值
简单说 逻辑与是一种短路逻辑,如果左侧表达式为 false,则直接短路返回结果,不再运算右侧表达式。运算逻辑如下(两个表达式的情况):
- 第 1 步:计算第一个表达式(左侧表达式)的值。
- 第 2 步:检测第一个表达式的值。如果左侧表达式的值可转换为 false(如 null、undefined、NaN、0、""、false),那么就会结束运算,直接返回第一个操作数的值。
- 第 3 步:如果第一个表达式可以转换为 true,则计算第二个操作数的值。
- 第 4 步:返回第二个表达式的值。
举例:
代码语言:javascript复制var a = 1 && 2;
var b = 0 && 2;
var c = 1 && 2 && null;
var d = 1 && 1-1 && null;
上述a的值为2,b为0,c为null,d为0
短路使场景
代码语言:javascript复制var user = 0; //定义并初始化变量
(! user && console.log("变量没有赋值")); //返回提示信息“变量没有赋值”
或运算 ||
在或运算中执行方式和与运算一致,只是判断false才继续执行直到true或执行到最后一个表达式
不再举例