说明

我们常说的是
与运算 只有表达式都为 true 时,才返回 true,否则返回 false(口诀:全真才真,一假则假)

理解误区:&& || 直接返回的是布尔值?

与运算 &&

答案是否定的:在与运算符在计算过程中,自左向右执行判断表达式,若当前表达式转为布尔值为false,则返回当前表达式的值否则将会继续执行,直到最后一个表达式,不再进行判断直接返回该表达式的值

简单说 逻辑与是一种短路逻辑,如果左侧表达式为 false,则直接短路返回结果,不再运算右侧表达式。运算逻辑如下(两个表达式的情况):

  • 第 1 步:计算第一个表达式(左侧表达式)的值。
  • 第 2 步:检测第一个表达式的值。如果左侧表达式的值可转换为 false(如 null、undefined、NaN、0、""、false),那么就会结束运算,直接返回第一个操作数的值。
  • 第 3 步:如果第一个表达式可以转换为 true,则计算第二个操作数的值。
  • 第 4 步:返回第二个表达式的值。

举例:

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

短路使场景

var user = 0;  //定义并初始化变量
(! user && console.log("变量没有赋值"));  //返回提示信息“变量没有赋值”

或运算 ||

在或运算中执行方式和与运算一致,只是判断false才继续执行直到true或执行到最后一个表达式

不再举例

如果觉得我的文章对你有用,可以赞助本站,使本站更好的发展