JavaScript 范例转换

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”NaNfalsethrows TypeError
null“null”0falsethrows TypeError
true“true”1new Boolean(true)
false“false”0new Boolean(false)
“”0falsenew String(“”)
“1.2”1.2truenew String(“1.2”)
“one”NaNtruenew String(“one”)
0“0”falsenew Number(0)
-0“0”falsenew Number(-0)
NaN“NaN”falseNumber(NaN)
Infinity“Infinity”truenew Number(Infinity)
-Infinity“-Infinity”truenew Number(-Infinity)
1“1”truenew Number(1)
{}(恣意对象)true
[](恣意数组)“”0true
[9](1个数字元素)“9”9true
[“a”](其他数组)运用 join() 要领NaNtrue
function(){}(恣意函数)NaNtrue

参考资料:

《JavaScript 威望指南》 (第6版) [美].David Flanagan著 淘宝前端团队译
《JavaScript 高等程序设计》 (第3版) [美].Nicholas C.Zakas著 李松峰 曹力译
    原文作者:wangqi
    原文地址: https://segmentfault.com/a/1190000008941091
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞