js 中逻辑运算符&&和||,位运算符&和|的总结

菜鸟学习的过程记录 ...._....

  • 逻辑运算符&&和|| ----(短路运算)

alert(a&&b) : 一般字面上理解a和b都为true的时候为true,否则返回false.
alert(a||b) : 字面理解a和b都为false的时候返回false,否则返回true.
下面的为具体运算结果

1||2     返回1
0||2     返回2
3||0    返回3
undefined||3  返回3
3||undefined   返回3

从以上可以看出,a||b a存在的时候,执行a; a不存在的时候,才会执行b

1&&2     返回2
0&&2     返回0
3&&0    返回0
undefined&&3  返回undefined
3&&undefined   返回undefined

从以上可以看出,a&&b a存在的时候,才会执行后面的b, a不存在的时候,只执行a,不执行后面的b

--故在写js中,以下情况可以应用:

var selectId = id || {};
if(APP && APP.name)    APP存在的时候才去执行APP.name
if(menu.title || default.title)   menu.title存在的时候取menu.title的值, 否则取默认的titlle的值

更强大的应用 (转自其他博客):

var add_level = 0; 
if(add_step == 5){ 
add_level = 1; 
} 
else if(add_step == 10){ 
add_level = 2; 
} 
else if(add_step == 12){ 
add_level = 3; 
} 
else if(add_step == 15){ 
add_level = 4; 
} 
else { 
add_level = 0; 
}

等同于

var add_level = (add_step==5 && 1) || (add_step==10 && 2) || (add_step==12 && 3) || (add_step==15 && 4) || 0;

  • 位运算符&和|
    转化成二进制进行异或计算
    ----- ‘ | ’ :两个位只要有一个为1,那么结果都为1。否则就为0;
    ----- ‘ & ’:两个数值的个位分别相与,同时为1才得1,只要一个为0就为0。

你可能感兴趣的:(js 中逻辑运算符&&和||,位运算符&和|的总结)