&&(且)與 || (或)兩個(gè)邏輯運(yùn)算符一些總結(jié)與心得:
一個(gè)大前提驾诈,在js邏輯運(yùn)算中,0(數(shù)字0)宿礁、”“(空字符串)、null(空值)蔬芥、false(布爾值false)梆靖、undefined(未初始化未定義數(shù)據(jù))、NaN(非數(shù)字特殊值)都會(huì)判為false笔诵,其他都為true返吻。
1. || ? 邏輯或運(yùn)算符實(shí)例
1||0 ? ? // 前面是true 后面是false ? 返回 1
1||2 ? ? //前面是true 后面是true ?返回1
0||1 ? ?//前面是false 后面是true ?返回1
0 || ' ' ?//前面是false 后面也是false ?返回 ' '
以上情況可以總結(jié)為:
短路原理----只要或運(yùn)算符前 一個(gè)值為真 ?后一個(gè)值無(wú)論真假都 返回的是前一個(gè)值 ,而只要前一個(gè)值為假 后一個(gè)值無(wú)論真假都返回后一個(gè)值乎婿。
實(shí)戰(zhàn)用法:
a = a || 'defaultValue' ?//使a獲得初始值 字符串 defaultValue ?使代碼更嚴(yán)謹(jǐn)测僵,優(yōu)雅
function getEvent(e){
var?e = e || window.event; ?//用于兼容ie瀏覽器 ?如果在ie瀏覽器下 ?參數(shù)值為空 前面的值為false 所以就將全局對(duì)象event賦值給e
}
2.&& ? 邏輯且運(yùn)算符實(shí)例
1&&0 ? ? // 前面是true 后面是false ? 返回 0
1&&2 ? ? //前面是true 后面是true ?返回2
0&&1 ? ?//前面是false 后面是true ?返回0
0 && ' ' ?//前面是false 后面也是false ?返回0
以上情況可以總結(jié)為:
短路原理----只要且運(yùn)算符前 一個(gè)值為真 ?后一個(gè)值無(wú)論真假都 返回的是后一個(gè)值 ,而只要前一個(gè)值為假 后一個(gè)值無(wú)論真假都返回前一個(gè)值次酌。
實(shí)戰(zhàn)用法:
a && $('body').addclass('active'); ? ?//先判斷a是否為真 再執(zhí)行后面的addclass() ?
callback && callback() ?//先判斷回調(diào)是否存在 再執(zhí)行回調(diào) 以免報(bào)錯(cuò)