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著 李松峰 曹力译