[英]What is the difference between (var1 !== var2) vs (var1 && var1 !== var2) in JavaScript?
JavaScript 中的(var1 !== var2)
與(var1 && var1 !== var2)
什么區別?
上面的問題是在使用 HTMLElementObjects 作為變量時參考的。
Google Chrome 的擴展程序開發示例在以下函數中顯示了這一點:
let current = event.target.parentElement.querySelector(
`.${selectedClassName}`
);
if (current && current !== event.target) {
current.classList.remove(selectedClassName);
}
let color = event.target.dataset.color;
event.target.classList.add(selectedClassName);
chrome.storage.sync.set({ color });
}
為什么它必須是“當前&&當前”? 它不適用於“當前!== event.target”
全文鏈接供參考: https : //developer.chrome.com/docs/extensions/mv3/getstarted/#logic
這是因為 JavaScript 的運算符優先級:
11: 嚴格不等式 (
!==
)
...
7:邏輯與(&&
)
由於嚴格不等式比邏輯 AND 具有更高的優先級,因此它在功能上等效於以下內容:
(current) && (current !== event.target)
如果current
是任何類型的 falsey 值,編寫教程的人可能不希望這個表達式被評估為 true。 通過這樣做,他們確保event.target
不能只是任何舊值並且仍然通過。
它的作用是檢查電流truthy,並不等於event.target。 如果 event.target 和 current 都是 null,它仍然會返回 false
var && var...
的第一個 Var 檢查是檢查 var 是否不為空或未定義,然后將它與 var2 進行比較實際上,您可以這樣編寫它:
If (var !== null || var !== undefined || var !== false) {
return var !== var2
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.