1.&&与运算符:
与运算符字面理解为两者都,其实际上是找假值。
demo1
``
var a=2;
var b=3;
m=a && b;
console.log(m); //3
``
记住一句话:&&运算,如果结果是true,则取最后一个值,如果结果是false,则取第一个值。
原理:&&找假值,当找到第一个假值时,会获取该值,后面的不再执行,也就是后面的值被短路。
如果都是真值时,取最后一个值。比如
demo2
``
var f = 2 && 3 && 0 && "5";
alert(f); //0
var f = 2 && 3 && 6 && "5";
alert(f); //5
``
2.||或运算:找真值
demo2
``
var a=2;
var b=3;
n=a || b;
console.log(n); //2
``
||或运算,如果结果是true,取第一个值,结果为false,取最后一个值。
原理:||运算符找真值,当找到第一个真值时,会获取该值,后面的不会获取。也就是后面的值被短路。
如果都是假值时,获取最后一个值。
demo2
``
var t=null || 3 || 0 || "2"
alert(t) //3
var t=0 || null || undefined || false
alert(t) //false
``
##短路原则,在逻辑运算符中,前面的值被返回后,后面的值则不再执行,这就是后面的值被前面的值短路。
知名电商网站js代码:
``
requirejs(['main','index'], function (main,index) {
if(index&&index.init){
index.init();
}
``
main是JS文件,index是main.js里返回的参数,由于&&是找假值,这里就是判断,当index不存在时,就让index初始化,当index没有初始化时,也让index初始化。