企业网站开发标准,企业网络建设,wordpress企业仿站,在服务器网站上做跳转字符串和数字之间的相等比较
var a 42;
var b 42;a b; // false
a b; // trueES5规范11.9.3.4-5定义如下:
(1)如果Type(x)是数字,Type(y)是字符串,则返回 x ToNumber(y) 的结果
(2)如果Type(x)是字符串,Type(x)是数字,则返回 ToNumber(x) y 的结果// 总结…字符串和数字之间的相等比较
var a 42;
var b 42;a b; // false
a b; // trueES5规范11.9.3.4-5定义如下:
(1)如果Type(x)是数字,Type(y)是字符串,则返回 x ToNumber(y) 的结果
(2)如果Type(x)是字符串,Type(x)是数字,则返回 ToNumber(x) y 的结果// 总结:字符串和数字的比较是将字符串转换为数字然后再进行比较其他类型和布尔类型之间的相等比较
var a 42;
var b true;a b; // falseES5规范11.9.3.6-7定义如下:
(1)如果Type(x)是布尔类型,则返回ToNumber(x) y 的结果
(2)如果Type(y)是布尔类型,则返回x ToNumber(y) 的结果// 总结:布尔型和其他类型比较时,总是先将布尔型转换为数字类型null和undefined之间的相等比较
var a null;
var b;a b; // true
a null; // true
b null; // truea false; // false
b false; // false
a ; // false
b ; // false
a 0; // false
b 0; // falseES5规范11.9.3.2-3规定:
(1)如果x为null,y为undefined,结果为true.
(2)如果x为undefined,y为null,结果为true.// 总结: 在宽松相等()中,null和undefined可以相互进行强制类型转换对象和非对象之间的比较
var a 42;
var b [42];a b; // trueES5规范11.9.3.8-9规定:
(1)如果Type(x)是字符串或数字,Type(y)是对象,则返回 x ToPrimitive(y)的结果;
(2)如果Type(x)是对象,Type(y)是字符串或数字,则返回 ToPrimitive(x) y的结果.// 总结:在对象与非对象的比较中,总是先使用ToPrmitive将对象转换为基本数据类型.
// 注:抽象ToPrimitive(参见ES5规范9.1节)会首先检查该值是否有valueOf()方法,如果有并且返回基本类型值,就使用该值进行强制类型转换.如果没有就
使用toString()的返回值来进行强制类型转换.
参考《你不知道的JavaScript》(中卷)P79~P83