最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

JavaScript邏輯運算符AND和OR之間的區(qū)別

2023-07-02 08:12 作者:曉楓Motivation  | 我要投稿

AND&&和 OR||是 JavaScript 中的邏輯運算符,可用于執(zhí)行不同的邏輯表達式。在這篇文章中,我將解釋它們之間的區(qū)別。

本文的目標(biāo)是讓您了解這些運算符的工作原理以及它們的不同之處。

要理解這些運算符,了解JavaScript 中真值和假值的概念非常重要。

(更|多優(yōu)質(zhì)內(nèi)|容:java567 點 c0m)


真實值和虛假值

在 JavaScript 中,許多值可以用它們的布爾值來表示。由 表示的值false是假值,由 表示的值true是真值。讓我們看一些例子:

?0
?false
?undefined
?null
?"" // empty string

值0、false、undefined、null和空字符串""是假值,因為它們的布爾表示是false。

至于真值,任何不是真值的值falsy都是truthy。這意味著真值包括true, 1, [3. 4], {}, "hello"。

現(xiàn)在我們已經(jīng)解決了這個問題,讓我們看看它們?nèi)绾闻cANDandOR運算符聯(lián)系起來。

如果您對此感興趣,我有該主題的視頻版本。

AND操作員

邏輯AND運算符用在表達式中的兩個操作數(shù)之間,如下所示:

?operand1 && operand2

如果第一個操作數(shù)是真值,則該運算符返回第二個操作數(shù)。如果第一個操作數(shù)是假值,則運算符將返回第一個操作數(shù)。正如我們所見,真值是計算結(jié)果為 的值true。

讓我們看一個例子:

?const exp1 = 5
?const exp2 = "Dillion"
?
?const result = exp1 && exp2
?
?console.log(result)
?// "Dillion"

在此示例中,我們的exp1值為5和exp2值為"Dillion"。然后我們有一個result變量,它保存使用和&&之間的運算符返回的值。exp1``exp2

這里發(fā)生的是,運算符從左側(cè)開始檢查是否exp1為真值。5是真值,因此運算符返回右側(cè)的值。這就是為什么“Dillion”result具有價值。

AND讓我們看另一個多次使用運算符的示例:

?function returnFalsy() {
? ?return ""
?}
?
?const exp1 = [1, 2]
?const exp2 = returnFalsy()
?const exp3 = { name: "Dillion" }
?
?const result = exp1 && exp2 && exp3
?
?console.log(result)
?// ""

正如我們在這個例子中看到的,我們有:

  • exp1用一個數(shù)組

  • exp1與調(diào)用的返回值returnFalsy()(這是一個空字符串 - 一個虛假值)

  • exp3與一個物體

最后,我們有一個result變量,它保存使用and&&之間的運算符和and之間的運算符返回的值。exp1exp2exp2``exp3

我們這里有exp1 && exp2操作數(shù) 1 和操作數(shù) 2。然后這個表達式的結(jié)果將成為下一個表達式的操作數(shù) 1:result && exp3。exp3這是第二個表達式中的第二個操作數(shù)。

這里發(fā)生的是,運算符從左側(cè)開始檢查是否exp1為真值。exp2在本例中,我們有一個數(shù)組,它是一個真值,這意味著將返回第二個操作數(shù)。exp2成為第一個操作數(shù),并exp3成為第二個表達式的第二個操作數(shù)。

第二個&&運算符檢查是否exp2為真值。在這種情況下,空字符串“”是一個假值,因此運算符返回exp2。它不需要檢查,exp3因為錯誤的事實exp2意味著操作員將停止從左到右的檢查。

這里發(fā)生的是短路,您可以在我關(guān)于短路運算符的文章中了解更多信息

OR操作員

邏輯OR運算符用在表達式中的兩個操作數(shù)之間,如下所示:

?operand1 || operand2

如果第一個操作數(shù)是真值,則運算符返回第一個操作數(shù)。如果第一個操作數(shù)是假值,則運算符將返回第二個操作數(shù)。

讓我們看一個例子:

?const exp1 = 5
?const exp2 = "Dillion"
?
?const result = exp1 || exp2
?
?console.log(result)
?// 5

在此示例中,我們的exp1值為5和exp2值為"Dillion"。然后我們有一個result變量,它保存使用和||之間的運算符返回的值。exp1``exp2

這里發(fā)生的是,運算符從左側(cè)開始檢查是否exp1為真值。5是一個真值,因此運算符返回它。這就是為什么result值為5的原因。

操作OR員不會費心去檢查,exp2因為它已經(jīng)找到了一個真實值。這與運算符相反AND。AND繼續(xù)從左向右,只要true。但OR會停止(再次,一旦看到true- 它只會繼續(xù)從左到右,只要false

OR讓我們看另一個多次使用運算符的示例:

?function returnFalsy() {
? ?return ""
?}
?
?const exp1 = null
?const exp2 = returnFalsy()
?const exp3 = { name: "Dillion" }
?
?const result = exp1 || exp2 || exp3
?
?console.log(result)
?// { name: "Dillion" }

正如我們在這個例子中看到的,我們有:

  • exp1值為null(假值)

  • exp1與調(diào)用的返回值returnFalsy()(這是一個空字符串 - 一個虛假值)

  • exp3與一個物體

最后,我們有一個result變量,它保存使用and||之間的運算符和and之間的運算符返回的值。exp1exp2exp2``exp3

我們這里有exp1 || exp2操作數(shù) 1 和操作數(shù) 2。然后這個表達式的結(jié)果將成為下一個表達式的操作數(shù) 1:result || exp3。exp3這是第二個表達式中的第二個操作數(shù)。

這里發(fā)生的是,運算符從左側(cè)開始檢查是否exp1為真值。在本例中,我們有,它是一個假值,這意味著將返回null第二個操作數(shù)。成為第一個操作數(shù),并成為第二個表達式的第二個操作數(shù)。exp2exp2exp3

第二個||運算符檢查是否exp2為真值。在這種情況下,空字符串“”是一個假值,因此運算符返回exp3。正如您在這里所注意到的,OR只要遇到錯誤值,運算符就會繼續(xù)運行。它只會在找到真值或到達表達式末尾時停止。

使用ANDand ORinif語句

if語句允許您創(chuàng)建條件語句,您可以在其中確定根據(jù)條件執(zhí)行的內(nèi)容。

AND讓我們看一個在語句中使用的示例if:

?const isLoggedIn = true
?const cart = []
?
?if (isLoggedIn && cart.length) {
? ?console.log("Cart not empty")
?} else {
? ?console.log("Cart is empty")
?}

你能猜出執(zhí)行這段代碼的結(jié)果嗎?結(jié)果是:

?// Cart is empty

原因如下。if該語句的條件是isLoggedIn && cart.length。左操作數(shù)的isLoggedIn計算結(jié)果為true。請記住,&&如果左操作數(shù)為 ,則運算符返回右操作數(shù)true。如果左操作數(shù)為 ,則僅返回左操作數(shù)false。在這種情況下,該運算符將返回cart.length,其計算結(jié)果為 0,因為cart數(shù)組為空。

這意味著該if塊被執(zhí)行為if(0).

該if語句將強制0為布爾值。正如我們之前看到的,0是一個假值。因此if,看到條件表達式0為的語句false將執(zhí)行else塊:console.log("Cart is empty")。您可以在本文中了解有關(guān)類型強制的更多信息。

假設(shè)OR被使用:

?const isLoggedIn = true
?const cart = []
?
?if (isLoggedIn || cart.length) {
? ?console.log("Cart not empty")
?} else {
? ?console.log("Cart is empty")
?}

你能猜到這個結(jié)果嗎?這里是:

?// Cart not empty

原因如下。if這里語句的條件是isLoggedIn || cart.length。左操作數(shù)的isLoggedIn計算結(jié)果為true。請記住,||如果左操作數(shù)為 ,則該運算符將返回該操作數(shù)true。如果左操作數(shù)為 ,則僅返回右操作數(shù)false。在這種情況下,運算符將返回isLoggedIn其計算結(jié)果為true。

這意味著該if塊被執(zhí)行為if(true).

在這種情況下,不會發(fā)生強制轉(zhuǎn)換,因為它true已經(jīng)是一個布爾值。因此if,看到條件表達式true為的語句true將執(zhí)行if塊:console.log("Cart not empty")。

包起來

AND以下是和之間的區(qū)別摘要OR:

  • AND如果左表達式是,則返回右表達式true

  • AND如果左表達式是,則返回左表達式false

  • OR如果左表達式是,則返回右表達式false

  • OR如果左表達式是,則返回左表達式true

您注意到 是 的OR倒數(shù)AND嗎?只要AND左邊在,就一直向右true,LEFT只要左邊在,就一直向右false

如果您喜歡這篇文章,請與其他人分享。

(更|多優(yōu)質(zhì)內(nèi)|容:java567 點 c0m)


JavaScript邏輯運算符AND和OR之間的區(qū)別的評論 (共 條)

分享到微博請遵守國家法律
红安县| 松江区| 长岛县| 平塘县| 和静县| 收藏| 巴楚县| 沙湾县| 潞西市| 凯里市| 剑川县| 建昌县| 台东市| 简阳市| 伊川县| 嘉定区| 汝城县| 固镇县| 台东县| 当涂县| 中宁县| 增城市| 肇东市| 金昌市| 上高县| 高雄市| 乐安县| 精河县| 资溪县| 成武县| 喀喇| 吉安市| 深州市| 淅川县| 哈巴河县| 京山县| 紫阳县| 昔阳县| 连江县| 四会市| 凤翔县|