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