一、Boolean转换
1、转型函数Boolean()
Boolean true false
String 任何非空字符串 ""(空字符串)
Number 任何非零数字值(包括无穷大) 0和NaN
Object 任何对象 null
Undefined n/a undefined
(① n/a(或N/A),是not applicable 的缩写,意思是“不适用”。)
流控制语句(如if)会自动执行响应的Boolean转换,所以掌握这些规则非常有必要!
下面我们做一些简单测试
console.log(Boolean(true))
console.log(Boolean(false))
console.log(Boolean(""))
console.log(Boolean("test"))
console.log(Boolean(0))
console.log(Boolean(1))
console.log(Boolean(NaN))
console.log(Boolean({}))
console.log(Boolean(null))
console.log(Boolean(undefined))
输出结果为
二、数值转换
有三个函数可以把非数值转换为数值Number()、parseInt()、parseFloat()。Number()可以用于任何数据类型,而另两个专门用于把字符串转换成数值。
1、转型函数Number()
的转换规则:
Boolean值 true和false分别转换成1和0
数字 简单的传入和返回
null 0
undefined 0
字符串:
只包含数字 十进制数值(忽略前导零)
包含有效的浮点格式 对应的浮点数值(忽略前导零)
包含有效的十六进制 相同大小的十进制整数
空字符串 0
字符串中包含上述格式之外的字符 NaN
对象 调用对象的valueOf()方法,然后依照前面规则转换。如果转换结果是NaN,调用对象toString()依照前面规则转换
2、parseInt()的转换规则:
从第一个非空格字符,如果第一个非空字符不是数字或负号,返回NaN,如果是,则查找下一个,遇到非数字字符时返回NaN。
空字符串 NaN
浮点数 整数部分
十六进制 对应的十进制数值
八进制 不能解析八进制,按照十进制来看(es3会按照八进制转化成响应的十进制数值)
console.log(parseInt(""))
console.log(parseInt("1.2"))
console.log(parseInt("0xa))
console.log(parseInt("070"))//es5不识别八进制哦
console.log(parseInt("-1"))
parseInt规定了第二个参数,规定要被解析的字符串的基数(几进制)为了避免错误,最好写上这个参数哦~
3、parseFloat()的转换规则:
和praseInt解析规则类似,但是会始终忽略前导零,只能解析十进制(十六进制格式的字符串会被解析成0),因此没有用第二个参数制定基础的用法
console.log(parseFloat("0XA"))
console.log(parseFloat("12"))
console.log(parseFloat("12X"))
console.log(parseFloat("12.1.1"))
console.log(parseFloat("012.1"))
console.log(parseFloat("3.12e7"))
4、++
一元+操作符和Number(0一样
三、字符串转换方法
1、toString()
数值、字符串、对象、布尔值都有toString方法,都返回相应值的字符串表现,但是null和undefined没有
注:使用时必须先定义一个变量,为数值转化时可以规定基数
var a="test";
console.log(a.toString());
var b=true;
console.log(b.toString());
var c=10;
console.log(c.toString(2));
console.log(c.toString(8));
console.log(c.toString(10));//不写参数默认为10
console.log(c.toString(16));
2、转型函数String()
转换规则:
如果有toString()方法,调用此方法(无参数)并返回结果
如果是null ,返回“null”
如果是undefined,返回“undefined”
console.log(String(1));
console.log(String(null));
console.log(String(undefined));
console.log(String(true));
console.log(String("fff"));
3、+“”