1. 5种基本数据类型
undefined null boolean number string
2. 引用类型
object
3.==运算符
(1)两个值类型相同,进行===比较
a.两个值都是相同基本数据类型,值相等时返回true,否则返回false。
console.log('a' == 'a');//true console.log(1 == 1);//true console.log(true == true);//true console.log('a' == 'b');//false
b.两个值都是引用类型,引用同一对象时,返回true,否则返回false。
var obj1 = {a:1,b:2}; var obj2 = obj1; var obj3 = {a:3,b:2}; console.log(obj1 == obj2);//true console.log(obj1 == obj3);//false
c.两个值都是NaN,返回false。
console.log(NaN == NaN);//false console.log(NaN === NaN);//false
(2)两个值类型不同
a.一个值是null,一个值是undefined,返回true。
console.log(null == undefined);//true console.log(null === undefined);//false
b.一个值是boolean值,把它转化成数字。true为1,false为0。
console.log(true == 1);//true, 先把true转为1,再比较 console.log(false == 0);//true,先把false转为0, 再比较 console.log(true == 2);//false
c.一个值是string值,另一个值是number,把string转化为number,再进行比较。
var a = '1'; var b = 1; console.log(a == b);//true,字符串‘1’ 转化为1,再比较。 console.log(true = a);//true,true转为数字1,然后a字符串1转为数字1,然后比较
d.一个值是object,另外一个值是string或number,把object转化为原始值再比较。
e.一个值是null或undefined,另外一个值不是null也不是undefined,返回false。(null与undefined不能转化为其他类型的值)
console.log(null == true);//false console.log(undefined == 1);//false console.log(undefined == false);//false
f.一个值是NaN返回false。
console.log(NaN == 0);//false console.log(NaN == false);//false console.log(NaN == 1);//false