在 JavaScript 中,避免使用“=”进行布尔值比较。
我们每天都会在 JavaScript 中使用“=”进行比较,以便仅在满足特定条件时才执行特定的代码块。
但是你知道“=”在JavaScript中是如何实际工作的吗?
在 JavaScript 中,`=="` 通过执行隐式强制转换来比较数值而不是布尔值。
以下是一个简单的例子:
const a = 10;
if(a == "10"){
console.log("Woo! Condition is true.");
}
在上面的代码块中,我们将字符串值“10”与常量变量a的整数值10进行比较
。因此,JavaScript 首先会对非数字类型的值(即“10”)执行隐式强制转换,将其转换为数字,然后再进行比较。
为什么应该避免使用“=="”比较布尔值?
我们现在知道,“=”比较的是整数值类型,而不是布尔值类型。因此,用“=”比较布尔值并不总是能得到想要的结果。
值检查错误实现示例:
例 1
const a = 10; if(a == true){ console.log("Condition is true."); }else{ console.log("Condition is false."); }
真值对应的数值是 1。
假值:10 不等于 1。
例 2
const a = "1"; if(a == true){ console.log("Condition is true."); }else{ console.log("Condition is false."); }
真值对应的数值是 1,a也等于 1。
真:1 等于 1。
值检查的正确实现示例:
例 1
const a = 10; if(a){ console.log("Condition is true."); }else{ console.log("Condition is false."); }
正确:因为a的布尔等价物为真。
例 2
const a = "1"; if(a){ console.log("Condition is true."); }else{ console.log("Condition is false."); }
正确:因为a的布尔等价物为真。
例 3
const a = ""; if(a){ console.log("Condition is true."); }else{ console.log("Condition is false."); }
错误:因为a的布尔等价物为 false。
结论
尽量避免使用“=”进行布尔值比较。虽然在很多情况下这样做可以解决问题,但这并不是执行条件检查的正确方法。
文章来源:https://dev.to/mehraas/avoid-boolean-values-comparison-with--in-javascript-1lok