在javascript中使用&&、||、!來實(shí)現(xiàn)邏輯運(yùn)算,其基本用法相信大家已經(jīng)熟知,本文將深入介紹其工作機(jī)制,相信對(duì)大家更加靈活的使用javascript會(huì)用幫助。

每個(gè)邏輯表達(dá)式都是有返回值的,但這個(gè)值并不一定是布爾變量,下面分別介紹:
(1)與操作符(&&)
與操作符的執(zhí)行過程如下:JavaScript依次獲取每一個(gè)操作數(shù),將它們轉(zhuǎn)換為布爾變量,如果是false,則直接返回這個(gè)操作數(shù)的值(注意,返回的是轉(zhuǎn)換前的原值,不一定是布爾類型),中斷后面操作數(shù)的處理;否則繼續(xù)處理下一個(gè)操作數(shù)。如果直到最后一個(gè)操作數(shù)仍然對(duì)應(yīng)布爾變量true,則返回最后這個(gè)操作數(shù)的值,下面的代碼演示了其執(zhí)行原理:

var a="1" && true && 0 && false && "abc";
alert(a);  //可見a的值是0
var b="abc" && true && "123";
alert(b);  //可見b的值是"123";

(2)或操作符(||)
和與操作符類似,或操作符的執(zhí)行過程如下:JavaScript依次獲取每一個(gè)操作數(shù),將它們轉(zhuǎn)換為布爾變量,如果是true,則直接返回這個(gè)操作數(shù)的值,中斷后面操作數(shù)的處理;否則繼續(xù)下一個(gè)操作數(shù)。如果知道最后一個(gè)操作數(shù)仍然對(duì)應(yīng)布爾變量false,則返回這個(gè)操作數(shù)的值。下面的代碼演示了其執(zhí)行原理:

var a="abc" || "123";
alert(a);  //可見a的值是"abc"
var b=false || "" || 0;
alert(b);  //可見a的值是0

或操作符的這一性質(zhì)在開發(fā)中經(jīng)常會(huì)用到。
(3)非操作符(!)
和前兩種操作符不同,非操作符始終返回布爾類型的變量,例如:

var a=! "abc";
alert(a);  //顯示a的值為false