JavaScript 语言中有两种比较方式,转换类型比较运算符 ==
和严格比较运算符 ===
。其中严格比较运算符仅当两个操作数的类型相同且值相等时才为true。而转换类型比较运算符==
会在进行比较之前,将两个操作数转换成相同的类型,再来比较。
比较运算符常用语逻辑语句中,它主要是用语判定变量或者值是否相等。
相等运算符
相等运算符 ==
会为两个不同类型的操作数转换类型,然后进行严格比较。
示例:
console.log(1 == 1); // true
console.log(1 == 2); // false
console.log(1 == true); // true
console.log(1 == '1'); // true
从上述代码中的1 == '1'
,输出结果为 true
,就可以看出 ==
相等运算符,在对两个操作数进行比较之前,会将两个操作数转换成相同的类型。
当使用比较运算符时,如果其中有布尔类型的操作数,值为 true时会转换为1,值为false时会转换为0。
当两个操作数都是对象时,JavaScript会比较其内部引用,当且仅当他们的引用指向内存中的相同对象时才相等,即他们在栈内存中的引用地址相同。
严格相等运算符
严格相等运算符 ===
不会对操作数进行类型转换,只有当值相等并且类型也是相等时才会返回 true
。
示例:
console.log(1 === 1); // true
console.log(1 === 2); // false
console