强制类型转换
1. Number()
Number()进行类型转换比parseInt()要更加严格,它是对参数一个一个进行转换的
流程如下:
- 先调用变量的valueOf()方法转换为基本类型值,一般对象转换后仍然为对象;
- 如果valueOf()转换后仍然为对象,则调用toString()方法转换为字符串,对于不能够转换为字符串的,则转换为类型的字符串表现形式;能够转换为字符串的则转换为字符串,如果转换结果为基本类型,再使用Number
- 如果toString()转换后仍然为对象,则报错
2. String()
- 对于基本类型的值,转换为他们的字符串形式
- 对于对象类型的值,流程如下:
- 显先使用toString()转换为字符串形式
- 然后使用valueOf()转换 ,如果返回为原生类型的值,则使用String()进行转换
- 如果valueOf()结果为对象,则报错
3. Boolean()
除以下五个值转换为false外,其他都转换为true;
null
undefined
+0或-0
'' // 空字符串
NaN
自动类型转换
自动转换的规则为:预期什么类型的值,就调用该类型的转换函数
1. 算数元素
在算数运算中,如果是加法运算,数字自动转换为字符串;其他运算符,字符串转换为数字;