本篇文章帶大家探討一下 JavaScript 中三元運(yùn)算符的語法及其一些常見用法,希望對大家有所幫助!
前端(vue)入門到精通課程:進(jìn)入學(xué)習(xí)
Apipost = Postman + Swagger + Mock + Jmeter 超好用的API調(diào)試工具:點(diǎn)擊使用
三元運(yùn)算符(也稱為條件運(yùn)算符)可用于執(zhí)行內(nèi)聯(lián)條件檢查,而不是使用if...else
語句。它使代碼更短,更易讀。它可用于根據(jù)條件為變量賦值,或根據(jù)條件執(zhí)行表達(dá)式。
語法
三元運(yùn)算符接受三個操作數(shù);它是JavaScript中唯一能做到這一點(diǎn)的運(yùn)算符。您提供一個要測試的條件,后跟一個問號,然后是兩個用冒號分隔的表達(dá)式。如果條件被認(rèn)為為真,則執(zhí)行第一個表達(dá)式;如果它被認(rèn)為是假的,則執(zhí)行最終的表達(dá)式。
它以以下格式使用:
condition ? expr1 : expr2
這里,condition
是要測試的條件。如果其值被認(rèn)為是true
,expr1
則執(zhí)行。否則,如果其值被認(rèn)為是false
,expr2
則執(zhí)行。
expr1
并且expr2
是任何一種表達(dá)方式。它們可以是變量、函數(shù)調(diào)用,甚至是其他條件。
例如:
1 > 2 ? console.log("true") : console.log('false');
使用三元運(yùn)算符進(jìn)行賦值
三元運(yùn)算符最常見的用例之一是決定將哪個值分配給變量。通常,一個變量的值可能取決于另一個變量或條件的值。
雖然這可以使用if...else
語句來完成,但它會使代碼更長且可讀性更低。例如:
const numbers = [1,2,3]; let message; if (numbers.length > 2) { message = '數(shù)組太長'; } else { message = '數(shù)組太短'; } console.log(message); // 數(shù)組太長
在此代碼示例中,您首先定義變量message
。然后,您使用該if...else
語句來確定變量的值。
這可以使用三元運(yùn)算符在一行中簡單地完成:
const numbers = [1,2,3]; let message = numbers.length > 2 ? '數(shù)組太長' : '數(shù)組太短'; console.log(message); // 數(shù)組太長
使用三元運(yùn)算符執(zhí)行表達(dá)式
三元運(yùn)算符可用于執(zhí)行任何類型的表達(dá)式。
例如,如果您想根據(jù)變量的值決定運(yùn)行哪個函數(shù),您可以使用以下if...else
語句執(zhí)行此操作:
if (feedback === "yes") { sayThankYou(); } else { saySorry(); }
這可以使用三元運(yùn)算符在一行中完成:
feedback === "yes" ? sayThankYou() : saySorry();
如果feedback
具有 value yes
,則將sayThankYou
調(diào)用并執(zhí)行該函數(shù)。否則,該saySorry
函數(shù)將被調(diào)用并執(zhí)行。
使用三元運(yùn)算符進(jìn)行空檢查
在許多情況下,您可能正在處理可能有也可能沒有定義值的變量——例如,從用戶輸入檢索結(jié)果時,或從服務(wù)器檢索數(shù)據(jù)時。
使用三元運(yùn)算符,您可以通過在條件操作數(shù)的位置傳遞變量名稱來檢查變量是否存在null
。undefined
這在變量是對象時特別有用。如果您嘗試訪問實(shí)際上是null
or的對象上的屬性undefined
,則會發(fā)生錯誤。首先檢查對象是否實(shí)際設(shè)置可以幫助您避免錯誤。
例如:
let book = { name: '小明', works: '斗破蒼穹' }; console.log(book ? book.name : '張三'); // "小明" book = null; console.log(book ? book.name : '張三'); // "張三"
在此代碼塊的第一部分,book
是一個具有兩個屬性的對象 –name
和works
在上使用三元運(yùn)算符時book
,它會檢查它是否不是null
or undefined
。如果不是——意味著它有一個值——name
則訪問該屬性并將輸出控制臺。否則,如果它為空,張三
輸出控制臺。
因?yàn)?code>bookis not null
,所以書名會記錄在控制臺中。但是,在第二部分中,當(dāng)應(yīng)用相同的條件時,三元運(yùn)算符中的條件將失敗,因?yàn)?code>bookis null
。因此,“張三”輸出控制臺。
嵌套條件
盡管三元運(yùn)算符是內(nèi)聯(lián)使用的,但可以將多個條件用作三元運(yùn)算符表達(dá)式的一部分。您可以嵌套或鏈接多個條件來執(zhí)行類似于if...else if...else
語句的條件檢查。
例如,一個變量的值可能取決于多個條件。它可以使用if...else if...else
:
let score = '67'; let grade; if (score < 50) { grade = 'F'; } else if (score < 70) { grade = 'D' } else if (score < 80) { grade = 'C' } else if (score < 90) { grade = 'B' } else { grade = 'A' } console.log(grade); // "D"
在此代碼塊中,您測試變量的多個條件score
以確定變量的字母等級。
可以使用三元運(yùn)算符執(zhí)行這些相同的條件,如下所示:
let score = '67'; let grade = score < 50 ? 'F' : score < 70 ? 'D' : score < 80 ? 'C' : score < 90 ? 'B' : 'A'; console.log(grade); // "D"
評估第一個條件,即score < 50
。如果是true
,那么 的grade
值為F
。如果是false
,則計(jì)算第二個表達(dá)式,即score < 70
。
這一直持續(xù)到所有條件都為false
,這意味著等級的值將為A
,或者直到其中一個條件被評估為true
并且其真實(shí)值被分配給grade
。
示例
在這個實(shí)時示例中,您可以測試三元運(yùn)算符如何在