简单来讲: == 表明相同, ===表明严格相同, 为啥这么说呢, 函数
这么理解: 当进行双等号比较时候: 先检查两个操做数数据类型,若是相同, 则进行===比较, 若是不一样, 则愿意为你进行一次类型转换, 转换成相同类型后再进行比较, 而===比较时, 若是类型不一样,直接就是false.对象
操做数1 == 操做数2, 操做数1 === 操做数2字符串
比较过程:it
双等号==: io
(1)若是两个值类型相同,再进行三个等号(===)的比较console
(2)若是两个值类型不一样,也有可能相等,需根据如下规则进行类型转换在比较:变量
1)若是一个是null,一个是undefined,那么相等数据类型
2)若是一个是字符串,一个是数值,把字符串转换成数值以后再进行比较引用
三等号===:数据
(1)若是类型不一样,就必定不相等
(2)若是两个都是数值,而且是同一个值,那么相等;若是其中至少一个是NaN,那么不相等。(判断一个值是不是NaN,只能使用isNaN( ) 来判断)
(3)若是两个都是字符串,每一个位置的字符都同样,那么相等,不然不相等。
(4)若是两个值都是true,或是false,那么相等
(5)若是两个值都引用同一个对象或是函数,那么相等,不然不相等
(6)若是两个值都是null,或是undefined,那么相等
=========================================================================================
在js中,switch case语句在比较的时候用的是全等,即condition === case
1 let a = "1"; 2 switch(a){ 3 case 1: 4 console.log("执行case分支"); 5 break; 6 default: 7 console.log("执行default分支") 8 } 9 10 //因为switch case语句在比较的时候用的是全等,而且因为a是字符串1,case里是数字1,二者类型不相等,因此上面的代码将会执行default分支,输出"执行default分支" 11 //若是咱们把case里的数字1换成字符串1,就会执行case分支,即输出"执行case分支" 12 //一样的,把变量a的值换成数字1,也会执行case分支,即输出"执行case分支"