1、逻辑与 && 的运算方式
var a = 1 && 2;
console.log(a); //返回的结果为 2
如果逻辑与运算符左边的值布尔转换后为true,那么返回右边的值(不管右边的值是真还是假)。
var a = false && 2;
console.log(a); //返回的结果为 false
如果逻辑与运算符左边的值布尔转换后为false,那么返回左边的值,但是当逻辑与的左边为 null/NaN/undefined ,结果就会得到null/NaN/undefined。
2、逻辑或 || 的运算方式
如果逻辑或运算符左边的值布尔转换后为false,那么返回右边的值(不管右边的值是真还是假)。
如果逻辑或运算符左边的值布尔转换后为true,那么返回左边的值,如果两个操作数都是是null(NaN/undefined),返回null(NaN/undefined)
var a = false || 2;
console.log(a); //返回的结果为2
var a = true || 2;
console.log(a); //返回的结果为 true
3.短路表达式实际应用补充(2018-8-14)
(1)正则表达式
v => !v || /^([0-9]{7,18})|(0?(13|14|15|17|18|19)[0-9]{9})$/.test(v) || ‘格式错误’,
前边为true则不再执行后边的,前边为false则继续往后执行。
(2)if的简化
vm.querySelObj[key] && (params[key] = vm.querySelObj[key]);
相当于 a&&(b=1);
a等于true则执行b=1,a=false则不执行b=1.用if写:if(a=true){b=1}