js中==与===的区别

83 阅读1分钟
==与===的区别
  • 使用==时,若两边类型相同,隐式调用===;若两边类型不同则先进行类型转换,再隐式调用===
  • 使用===时,比较栈内存地址中的值是否相同;若是基本类型,则值为常量,若是引用类型,则值为堆内存地址
使用==时的类型转换

左右两边类型不同时,非Number类型转为Number类型后比较,但null、undefined除外

null与undefined的区别
   Number(null)       // 0
   Number(undefined)  // NaN
   typeof null        // object
   typeof undefined   // undefined
案例
   1 == "1"       // true
   1 === "1"      // false
   "" == 0        // true
   " " == 0       // true
   true == 1      // true
   false == 0     // true
   NaN == NaN          // false
   null == 0           // false
   undefined == 0      // false
   null == undefined   // true
   null === undefined  // false 
引用类型比较
   let a = {};
   let b = {};
   let c = a;
   a === b;    // false 堆内存地址不同
   a === c;    // true  堆内存地址相同