JavaScript 中的 (var1 !== var2) 与 (var1 && var1 !== var2) 有什么区别?

时间:2021-07-01 19:41:18

标签: 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 });
}

为什么它必须是“当前&&当前”?它不适用于“current !== event.target”

全文链接以供参考:https://developer.chrome.com/docs/extensions/mv3/getstarted/#logic

3 个答案:

答案 0 :(得分:2)

这是因为 JavaScript 的 operator precedence

<块引用>

11:严格不等式 (!==)
...
7:逻辑与 (&&)

由于严格不等式比逻辑 AND 具有更高的优先级,因此它在功能上等效于以下内容:

(current) && (current !== event.target)

如果 current 是任何类型的假值,编写教程的人可能不希望这个表达式被评估为真。通过这样做,他们确保 event.target 不能只是任何旧值并且仍然通过。

答案 1 :(得分:1)

它所做的是检查 current 是否为真AND 不等于 event.target。如果 event.target 和 current 都为 null,它仍然会返回 false

答案 2 :(得分:-1)

var && var... 中的第一个 Var 检查是检查 var 是否为空或未定义,然后将它与 var2 进行比较 事实上,你可以这样写:

If (var !== null || var !== undefined || var !== false) {
 return  var !== var2
}
相关问题