在逆战班学习javaScript的第四周,让我们来谈论一下 " == " 和 " === "
1、" == " 相等
运算符称作相等,用来检测两个操作数是否相等,适用于一般比较,它在运算过程中存在隐式类型转换,且只要一边是数值,就以数值运算,若两边的操作数为对象或者时对象的函数属性时,则比较内存地
(1)、同值不同类型的比较
代码如下:
var a=10;
var b="10";
console.log(a==b); // true
console.log(typeof a) // number
console.log(typeof b) // string
详解:因为在此比较过程中a的值得类型为number类型,b的值得类型为string类型,则两者的数据类型不同,此时"=="促使b的值的类型发生了隐式类型转换,转化成number类型,因此内容比较相同,所以返回true。
(2)、不同值不同类型
代码如下:
// 1 与 true
var a=1;
var b=true;
console.log(a==b); // true
console.log(typeof a); // number
console.log(typeof b); // boolean
详解:因为在此比较过程中a的值得类型为number类型,b的值得类型Boolean类型,则两者的数据类型不同,此时 " == "促使b的值true转换成1(即布尔类型转换成字符类型),即: " 1 " == 1,所以 " == " 再次转换,把"1"转换成1(即字符类型转化成数值类型)
2、"=== " 严格等
运算符称为:严格等,用来检测两个操作数是否严格相等,它在运算过程中不存在隐式类型转换,除了比较值(也就是内容)还比较类型,且只要类型不匹配就返回false
(1)、同值同类型
代码如下:
// 1 与 1
var a=1;
var b=1;
console.log(a===b); // true
console.log(typeof a) // number
console.log(typeof b) // number
详解:此时比较过程中a的值为1,且类型为number,b的值为1,且类型为number,所以返回ture。
(2)、不同值不同类型
代码如下:
// 1 与 true
var a=1;
var b=true;
console.log(a===b); // false
console.log(typeof a); // number
console.log(typeof b); // boolean
详解:此时比较过程中a的值为1,且类型为number,b的值为true,且类型为Boolean,由于两个操作数的类型不同,所以返回false。
综上所述可得:
区别一: " == "在比较过程中存在隐式类型转换,而 " === " 在比较过程中不存在隐式类型转换。
区别二: " == "在比较过程中值比较数值(内容),而 " === " 在比较过程中不仅比较数值(内容)还比较类型。