首页 > 代码库 > JS的类型转换
JS的类型转换
当string,number函数不被用作构造函数的可以当成转换函数
如 string(false),number(‘3’),boolean([])
Object(3) = new number(3);
除了NULL和undefined以外任何值都具有toString()方法
JS 在执行程序的时候会自动检测表达式来进行变量转换。
显示转换变量:
可以使用构造函数:
String(‘op’);object();boolean([]),number(‘3’),
类型之间的转换:
类型 | 字符串 | 数字 | 布尔值 | 对象 |
undefined | “undefined” | NaN | false | Thows TypeError |
null | “” | 0 | false | Thows TypeError |
“” |
|
| false | New string(“”) |
“1.2” |
| 1.2 | true | New string(“1.2”) |
“one” |
| NaN | true | New string(“one”) |
0 | “0” |
| false | New number(0) |
-0 | “0” |
| false | New number(-0) |
NaN | “NaN” |
| false | New number(NaN) |
Infinity | “Infinity” |
| true | New number(Infinity) |
-Infinity | “-Infinity” |
| true | New number(-Infinity) |
1 | ‘1’ |
| True | New number(1) |
{}任意对象 |
|
| True |
|
[]任意数组 |
| 0 | True |
|
[8] | “8” | 8 | true |
|
[‘a’] | join | NaN | true |
|
function |
| NaN | true |
|
对象转换为原始值:
所有的对象都转换为布尔值为true,包括包装对象也是这样。
对象转换为字符串和数值的是调用一个方法来实现的。麻烦的是JS对象有两个不同的方法来转换。
第一个方法:toString()方法,返回一个反映这个对象的字符串。
({x:1,y:2}).toString() // =>[object object]
数组返回:将每个数组元素返回并在数组元素后加,合并成一个字符串。
函数类的toString返回这个函数定义语法;
日期类:返回一个可读的日期字符串。
第二个方法:valueOf()
这个方法未定义具体的作用;
如果存在原始值返回原始值,对象是复合值,因此一般返回对象本身,而不是返回一个原始值。
特殊情况:
对象转换到字符串:
如果对象具有toString方法,则调用此方法如果此方法返回的是一个原始值则把原始值转换为字符串。
如果对象没有toString方法,或是此方法不返回一个原始值的话调用valueOf方法,如果valueOf返回一个原始值则转换为字符串。
如果,value,toString没法返回原始值,则抛出一个错误。
对象转换到数字:
如果对象具有valueOf方法,,或是此方法不返回一个原始值的话调用valueOf方法,如果valueOf返回一个原始值则转换为数值。
如果对象不具有valueOf方法,则调用toString方法如果此方法返回的是一个原始值则把原始值转换为数值。
如果,value,toString没法返回原始值,则抛出一个错误。
JS的类型转换