alert(1||2)

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

alert(true||false); // true
alert(false||true); // true
alert(true||true); // true
alert(false||false); // false

但是,從深層意義上來說的話,卻有另一番天地,試下面代碼

alert(0||1);

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

alert(2||1);

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

alert('a'||1);

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

alert(''||1);

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

alert('a'||0);

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

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

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

alert(''||0);

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

alert(0||'');

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

這就意味

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

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


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

alert(true&&false); // false
alert(true&&true); // true
alert(false&&false); // false
alert(false&&true); // false

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

alert(''&&1);

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

alert(''&&0);

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

alert('a'&&1);

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

alert('a'&&0);

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

alert('a'&&'');

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

alert(0&&'a');

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

alert(0&&'');

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

這意味著

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

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

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

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

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

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

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

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

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

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í)是高于“||”的。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,554評(píng)論 19 139
  • 《裕語言》速成開發(fā)手冊(cè)3.0 官方用戶交流:iApp開發(fā)交流(1) 239547050iApp開發(fā)交流(2) 10...
    葉染柒丶閱讀 28,749評(píng)論 5 20
  • 第5章 引用類型(返回首頁) 本章內(nèi)容 使用對(duì)象 創(chuàng)建并操作數(shù)組 理解基本的JavaScript類型 使用基本類型...
    大學(xué)一百閱讀 3,677評(píng)論 0 4
  • 第一章: JS簡(jiǎn)介 從當(dāng)初簡(jiǎn)單的語言,變成了現(xiàn)在能夠處理復(fù)雜計(jì)算和交互,擁有閉包、匿名函數(shù), 甚至元編程等...
    LaBaby_閱讀 1,761評(píng)論 0 6
  • 最近在寫個(gè)性化推薦的論文,經(jīng)常用到Python來處理數(shù)據(jù),被pandas和numpy中的數(shù)據(jù)選取和索引問題繞的比較...
    shuhanrainbow閱讀 4,702評(píng)論 6 19

友情鏈接更多精彩內(nèi)容