第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

可選鏈接在 if 語句中使用時會導(dǎo)致意外結(jié)果

可選鏈接在 if 語句中使用時會導(dǎo)致意外結(jié)果

森欄 2022-10-21 10:49:44
我在代碼中有一個 if 語句,它檢查是否定義了一個對象,然后檢查它的一個屬性是否相等。我的 if 語句是這樣的:if(obj && obj.a !== x) { // do something }但是現(xiàn)在我使用了可選鏈接并將我的 if 語句更改為:if(obj?.a !== x) { // do something }但是現(xiàn)在我的代碼在這種情況下無法正常工作。即使 obj 未定義,代碼也會進(jìn)入 if 語句。請有人解釋為什么會這樣?
查看完整描述

1 回答

?
蝴蝶不菲

TA貢獻(xiàn)1810條經(jīng)驗 獲得超4個贊

但是現(xiàn)在我的代碼在這種情況下無法正常工作。即使 obj 未定義,代碼也會進(jìn)入 if 語句。

這主要是因為運(yùn)算符的優(yōu)先級。可選 channing (?.)比 And (&&)運(yùn)算符和嚴(yán)格不等式運(yùn)算符(!==)具有更高的優(yōu)先級。

讓我解釋一下這兩種情況:

Case 1: if(obj && obj.a !== x) { // do something }

在這里,&&的優(yōu)先級低于!==。所以這個比較可以等價于或?qū)懗桑?/p>

if(obj && (obj.a !== x)){// do something}

在這里,如果 obj 為 falsy 或 nullish,則永遠(yuǎn)不會執(zhí)行條件。

Case 2: if(obj?.a !== x) { // do something }

在這里,?。優(yōu)先級高于!==。所以這是比較可能相當(dāng)于:

if((obj && obj.a) !== x) { // do something }

所以在這種情況下,如果 obj 為空,我們將始終在 if 語句中輸入,直到 x 不是未定義的。


查看完整回答
反對 回復(fù) 2022-10-21
  • 1 回答
  • 0 關(guān)注
  • 110 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號