资讯专栏INFORMATION COLUMN

JavaScript 类型转换

cod7ce / 418人阅读

摘要:如果转换的结果是,则调用对象的方法,然后再次依照前面的规则转换返回的字符串值。

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

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/82348.html

相关文章

  • JavaScript隐式类型转换

    摘要:所谓装箱转换,正是把基本类型转换为对应的对象,他是类型转换中一种相当重要的种类。拆箱转换在标准中,规定了函数,它是对象类型到基本类型的转换即,拆箱转换。拆箱转换会尝试调用和来获得拆箱后的基本类型。 JavaScript隐式类型转换 基本数据类型 ECMAScript 一共定义了七种 build-in types,其中六种为 Primitive Value,Null, Undefined...

    bingo 评论0 收藏0
  • 数据类型 - Javascript语法基础 - Javascript核心

    摘要:在编程语言中,能够表示并操作的值的类型称做数据类型。中的原始类型包括数字,字符串和布尔值。日期与时间语言核心包括构造函数,用来创建表示日期和时间的对象。其规则为如果是布尔值,和分别被转换为和如果是数字值,返回本身。 源代码: https://github.com/RobinQu/Programing-In-Javascript/blob/master/chapters/Javas...

    sevi_stuo 评论0 收藏0
  • JavaScript 中的强制类型转换

    摘要:完整清单是中添加,此处不予介绍布尔值用来表示可能是真或假的值。结果抽象比较运算符在比较它们之前在类型之间进行自动转换。中的隐式转换称为强制类型转换,并在规范中定义。这些内置类型可用于在不同类型之间进行显式转换。 翻译:疯狂的技术宅原文:https://www.valentinog.com/bl... 本文首发微信公众号:前端先锋欢迎关注,每天都给你推送新鲜的前端技术文章 show...

    endiat 评论0 收藏0
  • JavaScript核心语法——数据类型

    摘要:原始类型分别有类型类型和类型三种。类型中存在一个特殊的值叫。也可以把其他类型的数据自动转换为类型运算符运算符判断原始类型语法结构变量名称。 数据类型 1.数据类型的概述;在JavaScript代码中,能够表示并且操作值的类型就叫做数据类型数据类型可以分成可变类型和不可变类型,可变类型的值是可以修改的。相反不可变类型的值是不可以修改的。数据类型还有原始类型(原始值)与引用类型(内置对象)...

    wfc_666 评论0 收藏0
  • Front-end developmenter必看,超实用的javaScript隐式类型转换规则记忆

    摘要:下面先看看涉及到的几个函数以及他们的转换规则,这个是需要记忆的内容类型转换需要使用到的函数对于布尔值用到的是对于数值,用到的是当然还有但是对于隐式类型转换的时候,调用的是前者。 javaScript类型转换规则 javaScript的类型转换其实一直是很多前端开发人员很迷的地方,一会儿这里要转换,一会儿那里又要转换,总之就是一个大写的迷,因为它隐式类型转换的地方实在是太多了。 但其实...

    fuchenxuan 评论0 收藏0
  • JavaScript类型转换的迷糊事儿

    摘要:下面分几步来简单的探探不同类型的转换吧以下的内容,都可以从权威指南中找到。其他值转换成在编写代码的过程中,几乎不用考虑它的取值类型。核心内置类,会尝试先于可以理解为对象优先转换成数字例外的是,利用的是转换。 最近在写公司的登录注册模块,遇到类型不同相比较的时候,就心惊胆战,每次都要用浏览器来验证一下,决定乱七八糟的随便写一下,方便日后自己回顾知识~ 弱类型带来的那些让人迷糊的事 弱类型...

    harriszh 评论0 收藏0

发表评论

0条评论

cod7ce

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<