13-数据类型转换
一、转为Number类型
1.parseInt()
遇到小数点,直接舍弃小数点后面的,不存在四舍五入
2.parseFloat()
可以转换小数
3.Number()
- 1.String
-
1.如果字符串中是纯数字,则直接将其转换为数字。
-
2.在转换时会先判断能否转换成数字,只要要字符串中包含了非数字的内容(字母,中文)(不包括小数点),则转换为 NaN。
-
3.如果字符串是一个空串或者是一个全是空格的字符串,则转换为 0。
-
- 2.Boolean
- 1.false转为0
- 2.true转为1
- 3.null
- 结果是0
- 4.undefined
- 结果是NaN
4.parseInt()和parseFloat()
- 1.String
- 1.如果字符串中有无法转换的值,就停止转换
- 值在开头:直接返回NaN
- 值不在开头,就转换这个值前面的数字,值后的不管是什么自动舍弃
- 2.如果字符串是一个空串或者是一个全是空格的字符串,结果是NaN。
- 1.如果字符串中有无法转换的值,就停止转换
- 2.Blooean
- 会自动识别为字母,所以结果是NaN
- 3.null和undefined
- 会自动识别为字母,所以结果是NaN
- 4.别的进制会自动转为十进制
<script>
var num = 10,
str = '666.66',//纯数字字符串
str1 = '6a6',//数字在中间
str2 = 'a66',//数字在开头
str3 = '',//空
boo = false,
boo2 = true,
a = undefined,
b = null;
// parseInt不保留小数
console.log(parseInt(str));//666
console.log(parseInt(str3));//NaN
// parseFloat和parseInt不能转换boolean类型,会识别为字母
console.log(parseInt(boo2));//NaN
console.log(parseFloat(str));//666.66
// 遇到不能转换的字符时,就停止转换,只转换该字符前面的
console.log(parseFloat(str1));//6
// 如果不能转换的值在开头,就会直接返回NaN
console.log(parseFloat(str2));//NaN
console.log(parseFloat(str3));//NaN
console.log(Number(str));//666.66
// Number()转化时,会先判断要转换的内容是否有不能转位数字的值,如果有,就直接NaN
console.log(Number(str1));//NaN
console.log(Number(str2));//NaN
console.log(Number(str3));//0
console.log(Number(boo));//0
console.log(Number(a));//NaN
// Number转换null是0
console.log(Number(b));//0
console.log(parseInt(b));//NaN
console.log(parseInt(a));//NaN
console.log(parseFloat(0x100));//256
</script>
5.隐式转换
有特殊情况:
null转换时会转换为0
undefined转换时会转换为NaN
console.log(+null);//0
console.log(+undefined);//NaN
<script>
var str = '666';
var a = false;
// -*/
console.log(typeof (str - 0));
console.log(typeof (a * 1));
console.log(typeof (str / 1));
//正负号
console.log(typeof (+a));
console.log(typeof (-str));
//自增自减
console.log(typeof (++a));
console.log(typeof (str++));
</script>
二、转为String类型
1.String()强制转换,什么都转
2.变量.toString()
- 1.null和undefined无法调用这个方法
- 2.括号里面可以跟想转换的进制
<script>
var num = 100,
boo = false,
a = null,
b = undefined;
console.log(num.toString());//10
console.log(boo.toString());//false
// 括号里可以跟想转换成几进制
console.log(num.toString(2));//1100100
// console.log(a.toString());//Cannot read property 'toString' of null
// console.log(b.toString());//Cannot read property 'toString' of undefined
console.log(String(num));//10
console.log(String(boo));//false
console.log(String(a));//null
console.log(String(b));//undefined
</script>
3.隐式转换
任何类型与''
拼接,都会转为字符串
三、转为Boolean
1. Boolean()
转为false的值:''、0、undefined、null、NaN、fasle、不成立的表达式
<script>
console.log(Boolean(''));//false
console.log(Boolean(0));//false
console.log(Boolean(undefined));//false
console.log(Boolean(null));//false
console.log(Boolean(NaN));//false
console.log(Boolean(false));//false
console.log(Boolean(1 + 1 < 1));//false
// Boolean转换引用数据类型时,哪怕是空的,都返回true!!!!
console.log(Boolean([]));//ture
console.log(Boolean({}));//ture
</script>
2.隐式转换
<script>
// 隐式转换
console.log(!!2);//true
console.log(!!'');//false
</script>
四、typeof
<script>
console.log(typeof 1);//number
console.log(typeof '');//string
console.log(typeof false);//boolean
console.log(typeof []);//object
console.log(typeof function(){});//function
console.log(typeof {});//object
// null是一个空对象,所以返回object
// 这是js遗留的一个bug
console.log(typeof null);//object
console.log(typeof undefined);//undefined
</script>