手机看片精品高清国产日韩,色先锋资源综合网,国产哺乳奶水91在线播放,乱伦小说亚洲色图欧洲电影

幫助中心 >  技術知識庫 >  網站相關 >  程序開發 >  JavaScript 邏輯運算符 “||” 和 “&&”

JavaScript 邏輯運算符 “||” 和 “&&”

2019-05-13 02:14:59 8917

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


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


請帶著你的回答,往下看……


邏輯或

邏輯或,也就是 “||”。從字面上來說,只有前后都是 false 的時候才返回 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, 那么上面的結果應該是 true, 而事實返回的結果是 1。再看下面代碼:


alert(2||1);

我們知道,前面 2 是 true, 后面 1 也是 true, 那返回結果又是什么呢?測試結果是 2, 繼續看:


alert('a'||1);

同樣,前面 'a' 是 true,后面 1 也是 true; 測試結果是 'a', 下面


alert(''||1);

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


alert('a'||0);

前面 'a' 是 true,而后面 0 是 false, 返回結果是 'a',繼續下面


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

前面 'a' 是 true, 后面 'b' 是 false, 返回結果是 'a',我們繼續下面


alert(''||0);

前面 '' 是 false, 后面 0 同樣是 false, 返回結果是 0


alert(0||'');

前面 0 是 false,后面 '' 是 false,返回結果是 ''


這就意味


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


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


邏輯與

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


alert(true&&false);    // false

alert(true&&true);    // true

alert(false&&false);    // false

alert(false&&true);    // false

然后,根據上面經驗,我們看看 “&&” 號前后,不單單是布爾類型的情況。


alert(''&&1);

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


alert(''&&0);

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


alert('a'&&1);

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


alert('a'&&0);

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


alert('a'&&'');

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


alert(0&&'a');

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


alert(0&&'');

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


這意味著


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


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


讓我們總結一下:


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


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


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


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


由上兩個測試可知,邏輯運算符,“||” 和 “&&” 都是遵行短路原則,只要確定符號前面的真假,既可確定返回值。


需要說明的是 “&&” 的優先級是高于 “||” 的,下面測試:


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

返回結果是 1。


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


根據上面我們得出的結論(1),(1||'a')將返回前面的值 1,(1&&2) 根據結論 (4) 應該返回后面的值 2。這顯然不對,由此可知 “&&” 的優先級是高于 “||” 的。


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

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

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

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