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
答案 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
}