国产欧美日韩第一页|日本一二三不卡视频|在线精品小视频,亚洲第一免费播放区,metcn人体亚洲一区,亚洲精品午夜视频

JavaScript 邏輯運(yùn)算符 “||” 和 “&&”

2019-05-13 02:14:59 1647

alert (1 && 2) 得到的結(jié)果是什么?


A:true B:false C:1 D:2


請(qǐng)帶著你的回答,往下看……


邏輯或

邏輯或,也就是 “||”。從字面上來說,只有前后都是 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é)果又是什么呢?測試結(jié)果是 2, 繼續(xù)看:


alert('a'||1);

同樣,前面 'a' 是 true,后面 1 也是 true; 測試結(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è)測試可知,邏輯運(yùn)算符,“||” 和 “&&” 都是遵行短路原則,只要確定符號(hào)前面的真假,既可確定返回值。


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


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


提交成功!非常感謝您的反饋,我們會(huì)繼續(xù)努力做到更好!

這條文檔是否有幫助解決問題?

非常抱歉未能幫助到您。為了給您提供更好的服務(wù),我們很需要您進(jìn)一步的反饋信息:

在文檔使用中是否遇到以下問題: