to Number
parseInt()
仅针对字符串
转换规则:
1. 忽略字符串前面的空格,直到找到第一个非空格符
2. 如果第一个字符不是数字或负号,返回 NaN
parseInt("") => NaN
3. 如果第一个字符是数字字符,继续解析第二个字符,直到解析完所有后续字符或遇到一个非数字字符
parseInt("9527great") => 9527
parseInt("11.4") => 11
4. 可以识别出各种整数字符(十进制、八进制、十六进制)
parseInt("0xA") => 10
parseInt("070") => 56
在解析八进制时,ES3 和 ES5 存在分歧,为消除不必要的麻烦,建议传入第二个参数以表示转换时使用的基数(即进制数)
parseInt("070", 8) => 56 // 当作八进制数来解析
parseInt("070", 10) => 70 // 当作十进制数来解析
parseFloat()
仅针对字符串
转换规则:
1. 忽略字符串前面的空格,直到找到第一个非空格符
2. 如果第一个字符不是数字或负号,返回 NaN
parseFloat("") => NaN
3. 从位置 0 开始解析每个字符,一直解析到字符串末尾,或解析遇到一个无效的浮点数字符为止
parseFloat("9527.23great") => 9527.23
4. 第一个小数点有效,第二个小数点无效
parseFloat("22.34.56") => 22.34
5. 始终会忽略前导的 0
parseFloat("0729.4") => 729.4
6. 只解析十进制整数格式
无第二个参数指定基数的用法
十六进制格式的字符串始终会被解析成 0
parseFloat("0xF") => 0
parseFloat("3.12e7") => 31200000
Number()
-
boolean
Number(true) => 1 Number(false) => 0
-
number
只是简单的传入与传出 Number(2) => 2
-
null
Number(null) => 0
-
undefined
Number(undefined) => NaN
-
string
1. 只包含数字,将其转换为十进制 Number("1") => 1 Number("011") => 11 2. 包含有效的浮点格式,将其转换为对应的浮点数值 Number("1.1") => 1.1 Number("02.3") => 2.3 3. 包含有效的十六进制格式,将其转换为相同大小的十进制数 Number("0xf") => 15 4. 空字符串,将其转换为 0 Number("") => 0 5. 其它格式字符串,将其转换为 NaN Number("2.2a") => NaN
-
对象
如果是对象,则调用对象的 valueOf() 方法,然后依照前面的规则转换返回的值。 如果转换的结果是 NaN,则调用对象的 toString() 方法,然后再次依照前面的规则转换返回的字符串值。 Number({}) => NaN 过程:{}.toString() => "[object Object]" => NaN
隐式转换
等价于 Number(x)
+x
x - 0
to String
toString()
number、boolean、object、string 都有 toString() 方法
数值的 toString() 方法可以传递一个参数指定输出数值的基数
null 和 undefined 没有 toString() 方法
String()
String() 转型函数能够将任何类型的值转换为字符串
-
转换规则
1. 如果值有 toString() 方法,则调用该方法并返回相应的结果 2. 如果值是 null,则返回 "null" 3. 如果值是 undefined,则返回 "undefined"
隐式转换
等价于 String(x)
x + ""
Number to String
toFixed()
toExponential()
toPrecision()
to Boolean
Boolean()
-
boolean
Boolean(true) => true Booelan(false) => false
-
string
Boolean("") => false Boolean("非空字符") => true
-
number
Boolean(0) => false Boolean(NaN) => false Boolean(非零数字值) => true
-
object
Boolean(null) => false Boolean(任何对象) => true
-
undefined
Boolean(undefined) => false
隐式转换
等价于 Boolean(x)
!!x
值 | 转换为字符串 | 数字 | 布尔值 | 对象 |
---|---|---|---|---|
undefined | "undefined" | NaN | false | throws TypeError |
null | "null" | 0 | false | throws TypeError |
true | "true" | 1 | new Boolean(true) | |
false | "false" | 0 | new Boolean(false) | |
"" | 0 | 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 | Number(NaN) | |
Infinity | "Infinity" | true | new Number(Infinity) | |
-Infinity | "-Infinity" | true | new Number(-Infinity) | |
1 | "1" | true | new Number(1) | |
{}(任意对象) | true | |||
[](任意数组) | "" | 0 | true | |
[9](1个数字元素) | "9" | 9 | true | |
["a"](其他数组) | 使用 join() 方法 | NaN | true | |
function(){}(任意函数) | NaN | true |
参考资料:
《JavaScript 权威指南》 (第6版) [美].David Flanagan著 淘宝前端团队译
《JavaScript 高级程序设计》 (第3版) [美].Nicholas C.Zakas著 李松峰 曹力译
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。