邏輯運算符: ! && || 優(yōu)先級關(guān)系:! && ||
布爾操作符(邏輯操作符)
布爾操作符有3種: &&(與)在岂、||(或)、 ! (非)
&&(與) :找第一個為false的值并返回
表達(dá)式1 && 表達(dá)式2 && 表達(dá)式3 && .......
返回只有兩種結(jié)果 true false
當(dāng)表達(dá)式1和表達(dá)式2 都為true的時候技即, 結(jié)果為true
document.write(true && true && true );
只要有一個條件不成立,返回false
document.write(true && false && true );
說明:在有一個操作數(shù)不是布爾值的情況樟遣,邏輯與操作就不一定返回值而叼,此時它遵循下列規(guī)則:
1、如果第一個操作數(shù)隱式類型轉(zhuǎn)換后為true豹悬,則返回第二個操作數(shù)
document.write(54 && 38 );
2葵陵、如果第一個操作數(shù)隱式類型轉(zhuǎn)換后為false,則返回第一個操作數(shù)
document.write(0 && 38 );
3瞻佛、如果有一個操作數(shù)是null脱篙,則返回null
document.write(38 && null );
4、如果有一個操作數(shù)是NaN伤柄,則返回NaN
document.write(38 && NaN );
5绊困、如果有一個操作數(shù)是undefined,則返回undefined
document.write(38 && undefined );
&&:兩邊都成立响迂,才成立. 如果前面有一個不成立就返回不成的值考抄。如果都成立,返回最后成立的那個值
返回的是起決定性作用的那個值
||(或):找第一個為true的值并返回
表達(dá)式1 || 表達(dá)式2
返回只有兩種結(jié)果 true false
表達(dá)式1和表達(dá)式2 有一個為true蔗彤,結(jié)果為true
只要有一個條件成立川梅,返回true
document.write(false || false || true );
說明:在有一個操作數(shù)不是布爾值的情況,邏輯與操作就不一定返回值然遏,此時它遵循下列規(guī)則:
1贫途、如果第一個操作數(shù)隱式類型轉(zhuǎn)換后為true,則返回第一個操作數(shù)
document.write(48 || 0);
2待侵、如果第一個操作數(shù)隱式類型轉(zhuǎn)換后為false丢早,則返回第二個操作數(shù)
document.write(false || 0);
3)、如果兩個操作數(shù)是null秧倾,則返回null
document.write(null || null);
4怨酝、如果兩個操作數(shù)是NaN,則返回NaN
document.write(NaN || NaN);
5那先、如果兩個操作數(shù)是undefined农猬,則返回undefined
document.write(undefined || undefined);
總結(jié): 幾乎所有語言中||和&&都遵循“短路”原理,我們可以總結(jié)為&&找到假的就停止尋找售淡,||找到真的就停止尋找斤葱,如果找不到慷垮,就返回最后一個
! (非)(取反)
說明:
1、無論操作數(shù)是什么數(shù)據(jù)類型揍堕,邏輯非都會返回一個布爾值
2料身、邏輯非操作符首先會將它的操作數(shù)轉(zhuǎn)換為一個布爾值,然后再 對其求反衩茸。
document.write(!NaN);
3芹血、同時使用兩個邏輯非操作符時,第一個邏輯非操作會基于無論什么操作數(shù)返回一個布爾值递瑰,而第二個邏輯非則對該布爾值求反祟牲。
document.write(!!NaN);
小編能力有限,存在不足或不全抖部,請大家指出,共同學(xué)習(xí)與交流议惰。