数据类型转换
显式数据类型转换
其他数据类型转数字
其他数据类型转数字 :使用Number()
- 字符串转数字
1
2
3
4Number('123'); // 123
Number('aaa'); // NaN
Number('1a'); // NaN
Number('3.14'); // 3.14 - 布尔值转字符串
1
2Number(true); // 1
Number(false); // 0 - undefined转字符串
1
Number(undefined); // NaN
- null转字符串
1
Number(null); // 0
- 字符串转数字
其他类型转数字:使用parseInt()
- 字符串转数字
1
2
3
4
5
6
7
8
9
10parseInt('231'); // 231
parseInt('3.14'); // 3
parseInt('3.9'); // 3
/*
* 可以看出parseInt方法只是简单的截取整数部分。并不进行四舍五入的运算
*/
/*-----------------------*/
parseInt('21aa'); // 21
parseInt('2a1'); // 2注意:parseInt():
第一个参数若是字符串,它就会对接受的字符串参数进行解析:例如- ‘21aa’,parseInt解析到可转化为数字的字符串’21’再往后解析发现遇到了不可转化为数字的’a’,那么它就会返回数字:21。也不管之后的字符串中是否有能转化为数字的子串
- 布尔转数字
1
2parseInt(true); //NaN
parseInt(false); // NaN - undefined转数字
1
parseInt(undefined); //NaN
- null转数字
1
parseInt(null); //NaN
- NaN
1
parseInt(NaN); // NaN
- 字符串转数字
其他类型转数字:使用parseFloat()
- 字符串转数字
1
2
3
4
5
6
7
8
9
10parseFloat('231'); // 231
parseFloat('2.3'); // 2.3
parseFloat('a'); // NaN
/*
* parseFloat()并不能保留想要的小数位
*
*/
var num = 3.128323;
num.toFixed(2); // '3.13' !注意这里的结果是字符串类型的 - 布尔转数字
1
2parseFloat(true); //NaN
parseFloat(false);// NaN - undefined转数字
1
parseFloat(undefined); // NaN
- null转数字
1
parseFloat(null); //NaN
parseInt(string,radix)
其实有两个参数1
2
3
4
5parseInt('10',16); // 16
/*
* 添加了第二个参数后含义为:
* 十六进制中的10 转化为十进制的结果为16
*/其他数据类型转字符串
- 字符串转数字
其他数据类型转字符串:String()
数字转字符串
1
2String(123); // "123"
String(123.111); // "123.111"布尔转字符串
1
2String(true); //"true"
String(false); // "false"undefined 或 null 转字符串
1
2String(null); // 'null'
String(undefined); // 'undefined'
如果比较运算符的两边数据类型不相等。比较的时候都将运算符两边的数据类型转化为数字类型。但是null类型和undefined类型既不>0,也不<0
1 | var a = '1' > 2; // false 字符串1先转换为数字1,之后1与2比较 |
=== 全等运算不进行数据类型转换
判断NaN:isNaN()方法
- 把参数先转换为Number类型,再把结果与NaN进行比较
isNaN('123'); // false
isNaN('1qq2'); // true
isNaN(true); // false
isNaN(false); // false
isNaN(null); //false
isNaN(undefined); //true