在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})