相等比较时的强制转换:
如果有数字,则会转换为数字进行比较;
在进行比较之前,布尔值会转换为数字0和1;
如果没有数字,有字符串则会转换为字符串;对象类型会调用valueOf转换为基本数据类型进行比较;
两个对象类型比较则会比较地址;
null和undefined在参与比较时不会进行类型转换。
特殊地,null=undefined,NaN与任何数据进行比较都不相等。
number函数进行数据类型转换与parseInt不同的是:
- parseInt只对字符串类型进行转换,number可以对任何类型进行转换。
- number:布尔值转换为01,数字转换为数字,null转换为0,undefined转换为NaN,字符串只包含数字(前面可以有正负号)则转换为数字,字符串有小数点则转换为浮点数,字符串是十六进制格式(0x开头)转换为十进制数字,空字符串转换为0,其他字符串转换为NaN。如果是对象,则调用对象的valueOf()方法,然后依照前面的规则转换返回的值。如果转换的结果是NaN,则调用对象的toString()方法,然后再次依照前面的规则转换返回的字符串值。
- parseInt:忽略字符串前面的空格,直至找到第一个非空格字符。如果第一个字符不是数字字符会转换为NaN,如果第一个字符是数字字符则会转换直到非数字字符。还可以指定字符串的进制。