博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JavaScript 类型转换
阅读量:6920 次
发布时间:2019-06-27

本文共 2819 字,大约阅读时间需要 9 分钟。

to Number

parseInt()

仅针对字符串

转换规则:

1. 忽略字符串前面的空格,直到找到第一个非空格符2. 如果第一个字符不是数字或负号,返回 NaN    parseInt("") => NaN3. 如果第一个字符是数字字符,继续解析第二个字符,直到解析完所有后续字符或遇到一个非数字字符    parseInt("9527great") => 9527    parseInt("11.4") => 114. 可以识别出各种整数字符(十进制、八进制、十六进制)    parseInt("0xA") => 10    parseInt("070") => 56    在解析八进制时,ES3 和 ES5 存在分歧,为消除不必要的麻烦,建议传入第二个参数以表示转换时使用的基数(即进制数)    parseInt("070",  8) => 56   // 当作八进制数来解析    parseInt("070", 10) => 70   // 当作十进制数来解析

parseFloat()

仅针对字符串

转换规则:

1. 忽略字符串前面的空格,直到找到第一个非空格符2. 如果第一个字符不是数字或负号,返回 NaN    parseFloat("") => NaN3. 从位置 0 开始解析每个字符,一直解析到字符串末尾,或解析遇到一个无效的浮点数字符为止    parseFloat("9527.23great") => 9527.234. 第一个小数点有效,第二个小数点无效    parseFloat("22.34.56") => 22.345. 始终会忽略前导的 0    parseFloat("0729.4") => 729.46. 只解析十进制整数格式    无第二个参数指定基数的用法    十六进制格式的字符串始终会被解析成 0    parseFloat("0xF") => 0    parseFloat("3.12e7") => 31200000

Number()

  • boolean

    Number(true)  => 1Number(false) => 0
  • number

    只是简单的传入与传出Number(2) => 2
  • null

    Number(null) => 0
  • undefined

    Number(undefined) => NaN
  • string

    1. 只包含数字,将其转换为十进制    Number("1") => 1    Number("011") => 112. 包含有效的浮点格式,将其转换为对应的浮点数值    Number("1.1") => 1.1    Number("02.3") => 2.33. 包含有效的十六进制格式,将其转换为相同大小的十进制数    Number("0xf") => 154. 空字符串,将其转换为 0    Number("") => 05. 其它格式字符串,将其转换为 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)  => trueBooelan(false) => false
  • string

    Boolean("") => falseBoolean("非空字符") => true
  • number

    Boolean(0)   => falseBoolean(NaN) => falseBoolean(非零数字值) => true
  • object

    Boolean(null) => falseBoolean(任何对象) => 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://zsecl.baihongyu.com/

你可能感兴趣的文章
JMeter学习(十九)JMeter测试MongoDB
查看>>
MDT 2010驱动管理新方法。
查看>>
我该怎么安排下属的工作-项目经理如何分配任务
查看>>
使用laravel一分钟搭建CURD后台页面
查看>>
java中获取文件路径的几种方式
查看>>
DataTable数据检索的性能分析(转寒江独钓)
查看>>
InstallShield12豪华版破解版下载|InstallShield下载|软件打包工具
查看>>
iOS面试题总结
查看>>
regex
查看>>
Android -- ViewPager滑动背景渐变
查看>>
Ubuntu下配置tftp服务和NFS服务
查看>>
svn的分支
查看>>
改Bug总结
查看>>
为什么项目经理非常难有节操的选举
查看>>
Wince 文本函数和字体应用
查看>>
如何在程序中给word文档加上标和下标
查看>>
sublime 经验总结 主题有 less2css
查看>>
PagerSlidingTabStrip
查看>>
HR人力资源战略流程制定
查看>>
C++ atol
查看>>