特殊类型比较,==与===区别

44 阅读1分钟

特殊类型比较

var str1 = '1';
var str2 = new String('1');

console.log(str1 == str2); // true
console.log(str1 === str2); // false

console.log(null == null); // true
console.log(null === null); // true

console.log(undefined == undefined); // true
console.log(undefined === undefined); // true

console.log(NaN == NaN); // false
console.log(NaN === NaN); // false

console.log(/a/ == /a/); // false
console.log(/a/ === /a/); // false

console.log({} == {}); // false
console.log({} === {}); // false

==与===区别如下:

  • ==是不判断类型,直接转类型后判断值
  • ===是先判断类型,在判断值

js中有个比较特殊的数---NAN,这个数与任意数相比较都为false,离谱,甚至与自身做比较时也是false 如下:

NaN == [] //false 
NaN == {} //false 
NaN == 0 //false 
NaN == false //false
NaN == "0" //false 
NaN == null //false 
NaN == undefined //false 

js中也两个特殊的数,null和undefined。这两个值互相等且自身等,其余情况与谁相比都不相等。

null == null //true 
null == undefined //true 
undefined == null //true 
undefined == undefined //true