本篇內(nèi)容介紹了“javascript的邏輯運(yùn)算符有哪些”的有關(guān)知識(shí),在實(shí)際案例的操作過(guò)程中,不少人都會(huì)遇到這樣的困境,接下來(lái)就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!
創(chuàng)新互聯(lián)是專業(yè)的梓潼網(wǎng)站建設(shè)公司,梓潼接單;提供成都網(wǎng)站制作、網(wǎng)站建設(shè)、外貿(mào)網(wǎng)站建設(shè),網(wǎng)頁(yè)設(shè)計(jì),網(wǎng)站設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行梓潼網(wǎng)站開發(fā)網(wǎng)頁(yè)制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來(lái)合作!
javascript的邏輯運(yùn)算符有:1、邏輯與“&&”,只有兩個(gè)操作數(shù)都為true時(shí),才返回true;2、邏輯或“||”,如果兩個(gè)操作數(shù)都為true,或其中一個(gè)為true,就返回true;3、邏輯非“!”,把操作數(shù)的值轉(zhuǎn)換為布爾值,并取反。
本教程操作環(huán)境:windows7系統(tǒng)、javascript1.8.5版、Dell G3電腦。
邏輯運(yùn)算符通常用來(lái)組合多個(gè)表達(dá)式,邏輯運(yùn)算符的運(yùn)算結(jié)果是一個(gè)布爾值,只能有兩種結(jié)果,不是 true 就是 false。下表中列舉了 JavaScript 中支持的邏輯運(yùn)算符:
運(yùn)算符 | 名稱 | 示例 |
---|---|---|
&& | 邏輯與 | x && y 表示如果 x 和 y 都為真,則為真 |
|| | 邏輯或 | x || y 表示如果 x 或 y 有一個(gè)為真,則為真 |
! | 邏輯非 | !x 表示如果 x 不為真,則為真 |
邏輯與運(yùn)算
邏輯與運(yùn)算(&&
)是 AND 布爾操作。只有兩個(gè)操作數(shù)都為 true 時(shí),才返回 true,否則返回 false。具體描述如表所示。
第一個(gè)操作數(shù) | 第二個(gè)操作數(shù) | 運(yùn)算結(jié)果 |
---|---|---|
true | true | true |
true | false | false |
false | true | false |
false | false | false |
邏輯與是一種短路邏輯,如果左側(cè)表達(dá)式為 false,則直接短路返回結(jié)果,不再運(yùn)算右側(cè)表達(dá)式。運(yùn)算邏輯如下:
第 1 步:計(jì)算第一個(gè)操作數(shù)(左側(cè)表達(dá)式)的值。
第 2 步:檢測(cè)第一個(gè)操作數(shù)的值。如果左側(cè)表達(dá)式的值可轉(zhuǎn)換為 false(如 null、undefined、NaN、0、""、false),那么就會(huì)結(jié)束運(yùn)算,直接返回第一個(gè)操作數(shù)的值。
第 3 步:如果第一個(gè)操作數(shù)可以轉(zhuǎn)換為 true,則計(jì)算第二個(gè)操作數(shù)(右側(cè)表達(dá)式)的值。
第 4 步:返回第二個(gè)操作數(shù)的值。
示例1
下面代碼利用邏輯與運(yùn)算檢測(cè)變量并進(jìn)行初始化。
var user; //定義變量 (! user && console.log("沒有賦值")); //返回提示信息“沒有賦值”
等效于:
var user; //定義變量 if (! user){ //條件判斷 console.log("變量沒有賦值"); }
如果變量 user 的值為 0 或空字符串等假值轉(zhuǎn)換為布爾值時(shí),則為 false,那么當(dāng)變量賦值之后,依然提示變量沒有賦值。因此,在設(shè)計(jì)時(shí)必須確保邏輯與左側(cè)的表達(dá)式返回值是一個(gè)可以預(yù)測(cè)的值。
var user = 0; //定義并初始化變量 (! user && console.log("變量沒有賦值")); //返回提示信息“變量沒有賦值”
右側(cè)表達(dá)式不應(yīng)該包含賦值、遞增、遞減和函數(shù)調(diào)用等有效運(yùn)算,因?yàn)楫?dāng)左側(cè)表達(dá)式為 false 時(shí),則直接跳過(guò)右側(cè)表達(dá)式,會(huì)給后面的運(yùn)算帶來(lái)潛在影響。
邏輯或運(yùn)算
邏輯或運(yùn)算||
是布爾 OR 操作。如果兩個(gè)操作數(shù)都為 true,或者其中一個(gè)為 true,就返回 true,否則就返回 false。具體如圖所示。
第一個(gè)操作數(shù) | 第二個(gè)操作數(shù) | 運(yùn)算結(jié)果 |
---|---|---|
true | true | true |
true | false | true |
false | true | true |
false | false | false |
邏輯或也是一種短路邏輯,如果左側(cè)表達(dá)式為 true,則直接短路返回結(jié)果,不再運(yùn)算右側(cè)表達(dá)式。運(yùn)算邏輯如下:
第 1 步:計(jì)算第一個(gè)操作數(shù)(左側(cè)表達(dá)式)的值。
第 2 步:檢測(cè)第一個(gè)操作數(shù)的值。如果左側(cè)表達(dá)式的值可轉(zhuǎn)換為 true,那么就會(huì)結(jié)束運(yùn)算,直接返回第一個(gè)操作數(shù)的值。
第 3 步:如果第一個(gè)操作數(shù)可以轉(zhuǎn)換為 false,則計(jì)算第二個(gè)操作數(shù)(右側(cè)表達(dá)式)的值。
第 4 步:返回第二個(gè)操作數(shù)的值。
示例2
針對(duì)下面 4 個(gè)表達(dá)式:
var n = 3; (n == 1) && console.log(1); (n == 2) && console.log(2); (n == 3) && console.log(3); ( ! n ) && console.log("null");
可以使用邏輯或?qū)ζ溥M(jìn)行合并:
var n = 3; (n == 1) && console.log(1) || (n == 2) && console.log(2) || (n == 3) && console.log(3) || ( ! n ) && console.log("null");
由于&&運(yùn)算符的優(yōu)先級(jí)高于||運(yùn)算符的優(yōu)先級(jí),所以不必使用小括號(hào)進(jìn)行分組。不過(guò)使用小括號(hào)分組后,代碼更容易閱讀。
var n = 3; ((n == 1) && console.log(1)) || ((n == 2) && console.log(2)) || ((n == 3) && console.log(3)) || (( ! n ) && console.log("null")) ||
邏輯與和邏輯或運(yùn)算符具有以下 2 個(gè)特點(diǎn):
在邏輯運(yùn)算過(guò)程中,臨時(shí)把操作數(shù)轉(zhuǎn)換為布爾值,然后根據(jù)布爾值決定下一步的操作,但是不會(huì)影響操作數(shù)的類型和最后返回結(jié)果。
受控于第一個(gè)操作數(shù),可能不會(huì)執(zhí)行第二個(gè)操作數(shù)。
邏輯非運(yùn)算
邏輯非運(yùn)算!
是布爾取反操作(NOT)。作為一元運(yùn)算符,直接放在操作數(shù)之前,把操作數(shù)的值轉(zhuǎn)換為布爾值,然后取反并返回。
示例3
下面列舉一些特殊操作數(shù)的邏輯非運(yùn)算返回值。
console.log( ! {} ); //如果操作數(shù)是對(duì)象,則返回false console.log( ! 0 ); //如果操作數(shù)是0,則返回true console.log( ! (n = 5)); //如果操作數(shù)是非零的任何數(shù)字,則返回false console.log( ! null ); //如果操作數(shù)是null,則返回true console.log( ! NaN ); //如果操作數(shù)是NaN,則返回true console.log( ! Infinity ); //如果操作數(shù)是Infinity,則返回false console.log( ! ( - Infinity )); //如果操作數(shù)是-Infinity,則返回false console.log( ! undefined ); //如果操作數(shù)是undefined,則返回true
示例4
如果對(duì)操作數(shù)執(zhí)行兩次邏輯非運(yùn)算操作,就相當(dāng)于把操作數(shù)轉(zhuǎn)換為布爾值。
console.log( ! 0 ); //返回true console.log( ! ! 0 ); //返回false
邏輯與和邏輯或運(yùn)算的返回值不必是布爾值,但是邏輯非運(yùn)算的返回值一定是布爾值。
“javascript的邏輯運(yùn)算符有哪些”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí)可以關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!