日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
Javascript邏輯運(yùn)算符“||”和“&&”

前面一直沒(méi)空,遺留了幾個(gè)問(wèn)題,現(xiàn)在處理下。

在javascript中運(yùn)算符 & 的作用。

 
 
 
 
  1. // 9 is 00000000000000000000000000001001  
  2. var expr1 = 9;  
  3.   
  4. // 5 is 00000000000000000000000000000101  
  5. var expr2 = 5;  
  6.   
  7. // 1 is 00000000000000000000000000000001  
  8. var result = expr1 & expr2;  
  9.   
  10. document.write(result);  
  11. // Output: 1 

在這里先是將9 和5轉(zhuǎn)換為2進(jìn)制,然后在進(jìn)行運(yùn)算,然后根據(jù)每一位對(duì)應(yīng)來(lái)計(jì)算,兩種均為1為1的計(jì)算放法,也就是‘與’。

一、先來(lái)說(shuō)說(shuō)||(邏輯或),從字面上來(lái)說(shuō),只有前后都是false的時(shí)候才返回false,否則返回true。

 
 
 
 
  1. alert(true||false);    // true 
  2. alert(false||true);    // true 
  3. alert(true||true);        // true 
  4. alert(false||false);    // false 

但是,從深層意義上來(lái)說(shuō)的話,卻有另一番天地,試下面代碼:

 
 
 
 
  1. alert(0||1); 

顯然,我們知道,前面0意味著false,而后面1意味著true,那么上面的結(jié)果應(yīng)該是true,而事實(shí)返回的結(jié)果是1。再看下面代碼:

 
 
 
 
  1. alert(2||1); 

我們知道,前面2是true,后面1也是true,那返回結(jié)果又是什么呢?測(cè)試結(jié)果是2,繼續(xù)看:

 
 
 
 
  1. alert('a'||1); 

同樣,前面'a'是true,后面1也是true;測(cè)試結(jié)果是'a',下面

 
 
 
 
  1. alert(''||1); 

由上,我們知道前面''是false,后面1是true,而返回結(jié)果是1。再看下面

 
 
 
 
  1. alert('a'||0); 

前面'a'是true,而后面0是false,返回結(jié)果是'a',繼續(xù)下面

 
 
 
 
  1. alert('a'||'b'); 

前面'a'是true,后面'b'是false,返回結(jié)果是'a',我們繼續(xù)下面

 
 
 
 
  1. alert(''||0); 

前面''是false,后面0同樣是false,返回結(jié)果是0

 
 
 
 
  1. alert(0||''); 

前面0是false,后面''是false,返回結(jié)果是''

這就意味

  • 只要“||”前面為false,不管“||”后面是true還是false,都返回“||”后面的值。
  • 只要“||”前面為true,不管“||”后面是true還是false,都返回“||”前面的值。

二、下面說(shuō)說(shuō)&&(邏輯與),從字面上來(lái)說(shuō),只有前后都是true的時(shí)候才返回true,否則返回false。

 
 
 
 
  1. alert(true&&false);    // false 
  2. alert(true&&true);    // true 
  3. alert(false&&false);    // false 
  4. alert(false&&true);    // false 

然后,根據(jù)上面經(jīng)驗(yàn),我們看看“&&”號(hào)前后,不單單是布爾類型的情況。

 
 
 
 
  1. alert(''&&1); 

結(jié)是返回'',“&&”前面''是false,后面是1是true。

 
 
 
 
  1. alert(''&&0); 

結(jié)是返回'',“&&”前面''是false,后面是0也是false。

 
 
 
 
  1. alert('a'&&1); 

結(jié)是返回1,“&&”前面''a是true,后面是1也是true。

 
 
 
 
  1. alert('a'&&0); 

結(jié)是返回0,“&&”前面''a是true,后面是0是false。

 
 
 
 
  1. alert('a'&&''); 

結(jié)是返回'',“&&”前面''a是true,后面是''是false。

 
 
 
 
  1. alert(0&&'a'); 

結(jié)是返回0,“&&”前面''0是false,后面是'a'是true。

 
 
 
 
  1. alert(0&&''); 

結(jié)是返回0,“&&”前面''0是false,后面是''也是false。

這意味著

  • 只要“&&”前面是false,無(wú)論“&&”后面是true還是false,結(jié)果都將返“&&”前面的值;
  • 只要“&&”前面是true,無(wú)論“&&”后面是true還是false,結(jié)果都將返“&&”后面的值;

讓我們總結(jié)一下:

1. 只要“||”前面為false,無(wú)論“||”后面是true還是false,結(jié)果都返回“||”后面的值。

2. 只要“||”前面為true,無(wú)論“||”后面是true還是false,結(jié)果都返回“||”前面的值。

3. 只要“&&”前面是false,無(wú)論“&&”后面是true還是false,結(jié)果都將返“&&”前面的值;

4. 只要“&&”前面是true,無(wú)論“&&”后面是true還是false,結(jié)果都將返“&&”后面的值;

由上兩個(gè)測(cè)試可知,邏輯運(yùn)算符,“||”和“&&”都是遵行短路原則,只要確定符號(hào)前面的真假,既可確定返回值。

需要說(shuō)明的是“&&”的優(yōu)先級(jí)是高于“||”的,下面測(cè)試:

 
 
 
 
  1. alert(1||'a'&&2); 

返回結(jié)果是1。

根據(jù)反證原理,我們假設(shè)“||”的優(yōu)先級(jí)不低于“&&”(這里只所以用“不低于”,是為了同時(shí)證明等級(jí)相同的情況)。

根據(jù)上面我們得出的結(jié)論(1),(1||'a')將返回前面的值1,(1&&2)根據(jù)結(jié)論(4)應(yīng)該返回后面的值2。這顯然不對(duì),由此可知“&&”的優(yōu)先級(jí)是高于“||”的。

 【本文為專欄作者“謝軍”的原創(chuàng)稿件,轉(zhuǎn)載可通過(guò)作者微信公眾號(hào)(jingfeng18)獲取聯(lián)系】

戳這里,看該作者更多好文


本文題目:Javascript邏輯運(yùn)算符“||”和“&&”
網(wǎng)頁(yè)地址:http://www.dlmjj.cn/article/ccepjce.html