Javascript中的==与===
在JavaScript中,== 和 === 运算符用于比较两个值。
== 运算符被称为相等运算符(Equality Operator)。它会比较两个值是否相等,但在比较之前会进行类型转换(如果两个值的类型不同)。如果两个值在类型转换后相等,则返回 true。
=== 运算符被称为严格相等运算符(Strict Equality Operator)。它会比较两个值是否严格相等,包括它们的类型。如果两个值的类型不同,或者值不同,则返回 false。
点击查看代码
var a1 = {
name:"tom",
age:10
};
var a2 = {
name:"tom",
age:10
};
if(a1==a2){
console.log("== is true")
}else{
console.log("== is false")
}
if(a1===a2){
console.log("=== is true")
}else{
console.log("=== is false")
}
运行结果:
a1和a2是两个不同的对象,即使它们包含想吐的属性和值。
在Javascript中,对象是引用类型,这意味着变量a1与变量a2存储的是对象内容地址的引用,而不是对象本身。
==运算符:
== 操作符在比较两个对象时,会进行类型转换(如果类型不同)然后再比较值。
a1a2:实际上是在比较这两个对象的引用(即它们在内存中的存储位置),而不是比较它们的属性值是否相同。即两个对象引用是否指向同一个内存地址。
由于a1和a2是两个不同的对象(即使它们包含相同的属性和值),它们指向不同的内存地址。因此a1a2返回false。
===运算符:
=== 操作符在比较两个值时,不仅会比较值本身,还会比较它们的类型,而且不会进行类型转换。
a1 === a2:这里比较的是两个对象的类型和值。
由于 a1 和 a2 是两个不同的对象实例,它们是不同的对象,具有不同的地址。因此,a1 === a2 也返回 false。