类型转换
类型转换的目的
计算机执行算术计算,要求操作数有相同的大小(位的数量相同),存储方式相同,因此需要转换类型
显式转换和隐式转换
隐式转换:编译器可以自动处理这些转换而不需要程序员介入
显示转换:程序员使用强制运算符执行转换
for example–隐式转换
10+"object"//=>"10 object"
"7"*"4"//=>28
var n=1-"X";//=>NaN
n+"object";//=>"NaN objects":NaN转换为字符串"NaN"
类型转换表
原始值转还原始值
原始值转换为布尔值
以下值被转换为false
- undefined
- null
- 0
- -0
- NaN
- “”//null string
原始值转换为对象
原始值通过调用String(),Number(),Boolen()构造为函数,转换为各自的包装对象
- null
- undefined
转换为TypeError(异常)
转换和相等性
- ==相等运算符
- ===恒等
相等运算符是数字的比较
- null=undefined//boolen 相等
- “0”==0//字符串转换为数字
- 0==false//比较之前布尔值转换为数字
- “0”==false//比较之前布尔值和字符串都转换为数字
注意值的转化不意味着相等,“==”运算符从不试图将两值进行相等
显式类型转换
javascript 会自动进行类型的转换,但仍需要显示转换
目的使代码的可读性增强
**方法**Boolen(),Number(),String(),Object() 不通过new运算符调用时,作为类型转换函数做类型转换:
Number("3")//=>3
String(false)//=>"false" 或使用false.toString()
Boolen(1)//=>true
Object(3)//=>new Number(3)
除null和undefined外的任何值都具有toString()方法,该方法与String()相同。
//显式转换
object(null)//return null object
object(undefined)//return null object
//隐式转换
Throws Error
X+""//等价于String(x)
+x//等价于Number(x)写成x-0
!!x//等价于Boolen(x)注意为双叹号
toString() 转换参数的可选基数
var n=17;
binary_String=n.toString(2)//转换为“10001”
octal_String=n.toString(8)//转换为“021”
hex_String=n.toString(16)//转换为“0x11
精确类型转换
Number 类中数字到字符串的类型场景定义了三个方法
- toFixed()根据小数后的指定位数将数字转换为字符串
- toExponential()根据指数记数法将数字转换为字符串
- toPrecision()根据有效数字位数将数字转换为字符串
var n=1234567;
n.toFixed(0);//"123457"
n.toFixed(2);//"123456.79"
n.toFixed(5);//"123456.78900"
n.toExponential(1);//"1.2e+5"
n.toExponential(3);//"1.235e+5"
n.tpPrecision(7);//"123456.8"
parseInt(),parseFloat() 全局函数不从属于任何类 parse:理解,解析
灵活且不受限制,parseInt():解析整数
parseFloat()解析浮点数
字符串前缀为“ox”,parseInt()将其解析为十六进制数