目录
1.自动转换->js会根据需要自动进行类型转换,但是转换时会遵循一定的规则
2.强行转换->通过内置对象的方法强制转换
转为字符串
自动转换
强制转换
String(),object.toString()
var a = 1234;
a = String(a);
var a = 1234;
a = a.toString();
转换为数字类型
自动转换
注意:数学运算(特殊情况:+再出现字符串的情况下不是数学运算,而是字符串的拼接)
强制转换
Number() 按照自动转换规则转换
parseInt(string) 、parseFloat(string)
isNaN() 函数用于检查其参数是否是非数字值
注意:parseInt还可以接受第二个参数(2到36之间),表示呗解析的值的进制,返回该值对应的10进制数。parseInt的第二个参数为10,即默认是十进制转十进制
parseInt('1000'); // 1000
// 等同于
parseInt('1000',10); // 1000
parseInt('1000',2); // 8
parseInt('1000',6); // 216
parseInt('1000',8); // 512
console.log(0x2f); //47
console.log(061); //49
console.log(Number(null)); //0
console.log(Number(undefined)); //NaN
console.log(Number('123.12')); //123.12
console.log(true+123); //124
console.log(Number('123abc')); //NaN
console.log(parseInt('012.6a23b')); //12
console.log(parseFloat('a12.6a23b')); //NaN
console.log(parseInt(true)); //NaN
转换为布尔类型
自动转换
强制转换
Boolean(), !!
if(0 || "" || '' || NaN || undefined || null){
alert('true')
}else{
alert('false')
}
!!123.11 // true
Boolean('abc') // true
console.log(Boolean([])); // true
console.log(Boolean([])); // true
console.log([] == false); // true; ==两边的数据类型不一致,需要转为数字进行比较;[]=>字符串''=>数字0
console.log(![] == false); // true ==的优先级比较低,肯定是先算左边 ![] 然后与后面进行比较,[]转为布尔值为true 取反 false false==false
console.log('0' == false); // true
在==比较的过程中,数据转换的规则 类型一样的几个特殊点:
{} == {} false,对象对比的是堆内存的地址
[] == [] false
NaN == NaN false
类型不一样的转换规则:
- null == undefined true,但是换成 === 结果是false(因为类型不一致),剩下null/undefined和其他任何数据类型值都不相等
- 字符串 == 对象,要把对象转为字符串
- 剩下如果 == 两边数据类型不一致,都是需要转换为数字再进行比较
如果类型都是字符串,就会按照ASCII编码的进行对比