短路运算 &&和||

一、逻辑运算符 &&(短路与)

特点:只要碰到了false或者等价于false的就短路,只要短路了就不会继续往后执行了。如果短路了,得到造成短路的这个值,如果不短路,得到的是第二个值

console.log( true && true ); // true
console.log( 123 && '中国'); // 中国
console.log( false && true ); // false
console.log( true && false); // false
console.log(1 && 0); // 0
console.log( undefined && 0); // undefined 
console.log(null && 1); // null

二、逻辑运算符 ||(短路或)

特点:只要碰到了true或者等价于true的就短路,只要短路了就不会继续往后执行了。如果短路了,得到造成短路的这个值,如果不短路,得到的是第二个值

console.log( true || true ); // true
console.log( 123 || '中国'); // 123
console.log( false || true ); // true
console.log( true || false); // true
console.log(1 || 0); // 1
console.log( undefined || 0); // 0 
console.log(null || 1); // 1

需要注意的是:&& 和 || 的结果不一定是布尔类型,短路或一般用于设置函数的默认参数

 

之前记录的一段:

注意&&短路逻辑的用法

逻辑与是一种短路逻辑,如果左侧表达式为 false,则直接短路返回结果,不再运算右侧表达式。运算逻辑如下:

  • 第 1 步:计算第一个操作数(左侧表达式)的值。
  • 第 2 步:检测第一个操作数的值。如果左侧表达式的值可转换为 false(如 null、undefined、NaN、0、""、false),那么就会结束运算,直接返回第一个操作数的值。
  • 第 3 步:如果第一个操作数可以转换为 true,则计算第二个操作数(右侧表达式)的值。
  • 第 4 步:返回第二个操作数的值。
复制代码
var user;  //定义变量
(!user && console.log("没有赋值"));  //返回提示信息“没有赋值”

等效于:

var user;    //定义变量
if (!user){  //条件判断
    console.log("变量没有赋值");
}
posted @ 2022-05-26 20:30  ZJTL  阅读(134)  评论(0编辑  收藏  举报