簡體   English   中英

JavaScript 中的 (var1 !== var2) 與 (var1 && var1 !== var2) 有什么區別?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM