javascript中的恒等是指两个值不仅值相同,还要类型相同。因此,恒等在javascript中相当于是一种更加严格的等于。
以下是一些例子:
1===1 // true
"hello"==="hello" // true
1==="1" // false
true===1 // false
在第一个例子中,1和1都是数字,并且类型相同,因此它们相等。
在第二个例子中,"hello"和"hello"都是字符串,并且类型相同,因此它们相等。
在第三个例子中,1是数字而"1"是字符串,它们的类型不同,因此它们不相等。
在最后一个例子中,true是布尔值,而1是数字,它们的类型也不同,因此它们不相等。
由于javascript是一种弱类型语言,它不会在比较值时考虑类型。因此,使用双等于比较时可能会出现一些奇怪的情况:
1=="1" // true
true==1 // true
"1"==true // true
在以上例子中,“1”和1实际上是相等的,因为javascript会将字符串转换为数字。同样,true也可以被转换为数字1,因此它和1也相等。然后,“1”又可以被转换为布尔值true,因此它和true也相等。
因此,在javascript中,如果想要比较值并且要求值和类型都相等,恒等是一个更加保险的选择。否则,可能会出现一些令人惊讶的结果。
function foo(bar) {
if (bar===true) {
console.log("bar是真的!");
} else {
console.log("bar不是真的!");
}
}
例如,在以上代码中,如果要检查bar是否是真的,使用恒等是非常重要的。如果使用双等于,那么当传入的bar是数字1或字符串"true"时,它们会被认为是真的,这可能会造成不必要的混乱。
因此,使用恒等时,确保两个值不仅值相同,还要类型相同。这是一种非常重要的好习惯,可以让我们避免很多不必要的错误。