相等运算符==与等同运算符===,均可以用于判断数据是否相等,返回boolean类型的数据;==运算符作比较时,要求类型不必定相同,值经过数据类型转换以后相等便可。===运算符作比较时,要求类型必须相同,并且值也必须相同。 对象
===运算符的条件: 字符串
一、若是运算数类型不相同,那么不等同; string
二、若是运算数类型都是number,那么比较两个数值(任意一个为NaN,那么也不等同)是否等同; 数据类型
三、若是运算数类型都是boolean,那么两个运算数都为true或false时就等同; 引用
四、若是运算数类型都是对象类型时,那么两个运算数必须引用到同一个对象时才等同,即便引用的两个对象的属性彻底相同,也不能断定为等同; 方法
五、运算数null只能null等同; 数据
六、运算数undefined只能与undefined等同; 类型转换
==运算符的条件: co
一、若是运算数类型相同,那么按===运算符进行比较; 字符
二、若是一个运算数是number,另外一个是boolean类型,那么把boolean转换成0或1,再判断number是否相等;
三、若是一个运算数是NaN,那么结果必定不相等;
四、null、undefined、""、0、false相等;
五、一、true相等;
六、非空字符串、true相等;
七、若是一个运算数是number,另外一个是string类型,那么先把string转换为number,再作number之间的判断;
八、如查一个运算数是对象,另外一个是number或string类型,那么把对象转换为基本类型,再作比较。对象转换为基本类型时,通常先调用对象的valueOf方法,以返回一个基本类型的数据。若是valueOf方法没能返回一个基本类型的数据,那么再调用toString方法,返回一个字符串,再判断相等。但不同凡响的是Date对象,它是先调用toString方法返回字符串,再判断相等。
进行相等性转换的规则是运算数都尽可能向number类型转换;
"1" == true;
这个表达式的执行过程是,先把字符串"1"转换为数值1,再把boolean值true转换为数值1,再判断相等性。