严格比较运算符 ===
仅当两个操做数的类型相同且值相等为 true,不作类型转换,比较容易理解指针
类型转换比较运算符 ==
- 当比较数字和字符串时,字符串会转换成数字值。 JavaScript 尝试将数字字面量转换为数字类型的值。 首先, 一个数学上的值会从数字字面量中衍生出来,而后获得被四舍五入后的数字类型的值。
- 若是其中一个操做数为布尔类型,那么布尔操做数若是为true,那么会转换为1,若是为false,会转换为整数0,即0。
- 若是一个对象与数字或字符串相比较,JavaScript会尝试返回对象的默认值。操做符会尝试经过方法valueOf和toString将对象转换为其原始值(一个字符串或数字类型的值)。若是尝试转换失败,会产生一个运行时错误。
- 注意:当且仅当与原始值比较时,对象会被转换为原始值。当两个操做数均为对象时,它们做为对象进行比较,仅当它们引用相同对象时返回true。
比较的特色
- 对于两个拥有相同字符顺序,相同长度,而且每一个字符的位置都匹配的字符串,应该使用严格比较运算符。
- 对于两个数值相同的数字应该使用严格比较运算符,NaN和任何值不相等,包括其自身,正数零等于负数零。
- 对于两个同为true或同为false的布尔操做数,应使用严格比较运算符。
- 不要使用严格比较运算符或比较运算符来比较两个不相等的对象。
- 当比较一个表达式和一个对象时,仅当两个操做数引用相同的对象(指针指向相同对象)。
- 对于Null 和 Undefined 类型而言,应使用严格比较运算符比较其自身,使用比较运算符进行互相比较。