js中的短路运算符 【 || , && 】

时间:2025-02-14 08:12:49

在JS中经常会使用到短路运算符,主要是逻辑与(&&) 和 逻辑或(||)、

注意:

  • 除0和NaN之外的所有数字,转换为布尔型都为true。NaN: (非数值)

  • 除 "" 之外的所有字符,转换为布尔型都为true

  • null和undefined转换为布尔型为false

1. 逻辑与&&的运算

(1)如果两边都为数字,或字符串数字,则返回右边的

(2)如果左边的值为 【true 】,不管右边的值是(真)是(假)都返回右边的

(3)如果左边的值为 【false 】,则都返回左边的,那么返回左边的值,但是当逻辑与的左边为 null/NaN/undefined ,结果就会得到null/NaN/undefined。

let c = 7 && 6;
(c)   //返回 6


let a = true && 6;
(a)  //若左边为真,返回右边的, 也返回 6
let a = 6 && true;
(a) // true


let b = false && 6;
(b)   //若左边为假,返回左边的, 返回 false
let bq1 = 6 && false;
(bq1)    //返回 false

// 没有空格
let dde = !"" && 5
("dde:"+dde);  //5
let daee = "" && 5
("ddee:"+daee);   //返回一个空

// 加了空格
let dde = !" " && 5       
("dde:"+dde);  // 返回 false
let daee = " " && 5
("ddee:"+daee);   //返回 5

2. 逻辑或||的运算

(1)如果两边都为数字,或字符串数字,则返回左边的

(2)如果左边的值布尔转换后为true,那么返回左边的值,如果两个操作数都是是null (NaN/undefined),返回null(NaN/undefined)

(3)如果左边的值布尔转换后为false,那么返回右边的值(不管右边的值是真还是假)。

let aac = 10 || 111;
(aac)    //返回左边的 10

let aa = true || 7;
(aa)      //返回左边的 true
let aaa = 7 || true;
(aaa)     //返回左边的 7

let aaaa = false || 66
(aaaa);   //返回右边的 66
let aaab = 66 || false
(aaab);   //返回左边的 66


let bb = false || 6;
(bb)       //返回右边的 6

(!"")   //返回 true

let dd = !"" || 5
("dd:"+dd);  //true
let da = "" || 5  
("da:"+da);  // 5
//有空格
let dda = !" " || 5
("dda:"+dda);  // 5
let dae = " " || 5
("dae:"+dae);   //空格

3.使用场景

【注意:如果vue的代码风格都是不加' ; ',下面多个条件的时候要用小括号开头(),可能会报错】

例:

//判断this里是否有这个的值,存在为true,执行后面的
let { phone } = this;
phone && (await this.$("getCode", phone));



let { phone, code, password, password1 } = this;
(phone&&code&&password&&password1) && this.$('userRegister',{phone, code, password, password1})