- 工信部備案號 滇ICP備05000110號-1
- 滇公安備案 滇53010302000111
- 增值電信業(yè)務(wù)經(jīng)營許可證 B1.B2-20181647、滇B1.B2-20190004
- 云南互聯(lián)網(wǎng)協(xié)會理事單位
- 安全聯(lián)盟認(rèn)證網(wǎng)站身份V標(biāo)記
- 域名注冊服務(wù)機(jī)構(gòu)許可:滇D3-20230001
- 代理域名注冊服務(wù)機(jī)構(gòu):新網(wǎng)數(shù)碼
alert (1 && 2) 得到的結(jié)果是什么?
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, 那么上面的結(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 的時候才返回 true,否則返回 false。
alert(true&&false); // false
alert(true&&true); // true
alert(false&&false); // false
alert(false&&true); // false
然后,根據(jù)上面經(jīng)驗(yàn),我們看看 “&&” 號前后,不單單是布爾類型的情況。
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é)果都將返 “&&” 后面的值;
由上兩個測試可知,邏輯運(yùn)算符,“||” 和 “&&” 都是遵行短路原則,只要確定符號前面的真假,既可確定返回值。
需要說明的是 “&&” 的優(yōu)先級是高于 “||” 的,下面測試:
alert(1||'a'&&2);
返回結(jié)果是 1。
根據(jù)反證原理,我們假設(shè) “||” 的優(yōu)先級不低于 “&&”(這里只所以用 “不低于”,是為了同時證明等級相同的情況)。
根據(jù)上面我們得出的結(jié)論(1),(1||'a')將返回前面的值 1,(1&&2) 根據(jù)結(jié)論 (4) 應(yīng)該返回后面的值 2。這顯然不對,由此可知 “&&” 的優(yōu)先級是高于 “||” 的。
售前咨詢
售后咨詢
備案咨詢
二維碼
TOP