[JavaScript]JavaScript中的数据类型转换

上一篇博文中,总结JavaScript中的数据类型以及他们之间的区别、注意事项,今天写下这篇博文,顺着数据类型,来讲讲他们之间的转换。

首先回顾一下七种数据类型:

  • 基本类型
    • Number
    • String
    • Symbol
    • Boolean
    • null
    • undefined
  • 复杂类型
    • Object

题外话:

  • 因为所学不深,所以文中所涉及的关于symbol都会跳过,想了解symbol的朋友可以到MDN或者直接Google
  • 数据类型转换一般都是在基本类型之间完成,对于基本类型和复杂类型之间的转换是很难做到的。

Number

  • String转Number

// 使用Number()
Number('1')     //1

// 使用parseInt()
parseInt('1')   //1

// 使用parseFloat()
parseFloat('1.23')  //1.23

// 使用 'x' - 0
'3' - 0     //3

// 使用 + 'x'
+ '3'   //3

注意事项

当使用parseInt()的时候,需要添加第二个参数,表示转换的进制:

// 不添加进制
prseInt('011')	//11
// 转换为八进制
paseInt('011',8)	//9

还需要注意:

// 一旦这个字符串是以数字字符开头,中间参杂着非数字字符,则会转换最前面的数字字符
parseInt('111s')	//111
parseInt('1112ss1111')  //1112
  • Boolean转Number
// 使用Number()
Number(false)   //0
Number(true)   //1
  • null转Number
// 使用Number()
Number(null)   //0
  • undefined转Number
// 使用Number()
Number(undefined)   //NaN

String

  • Number转String
// 使用toString()
var a = 11
a.toString()    //'11'

// 使用 x + ''
11 + ''     //'11'

  • Boolean转String
// 使用toString()
var a = true
a.toString()    //'true'

// 使用 x + ''
true + ''     //'true'

  • null转String
// 使用toString()
// 结果报错

// 使用 x + ''
null + ''     //'null'

  • undefined转String
// 使用toString()
// 结果报错

// 使用 x + ''
undefined + ''     //'undefined'


Boolean

  • Number转 Boolean
// 使用Boolean()
Boolean(1)    //true

// 使用 !!x
!!1   //true

  • String转 Boolean
// 使用Boolean()
Boolean('a')    //true

// 使用 !!x
!!'a'   //true

  • null转 Boolean
// 使用Boolean()
Boolean(null)    //false

// 使用 !!x
!!null   //false

  • undefined转 Boolean
// 使用Boolean()
Boolean(undefined)    //false

// 使用 !!x
!!undefined   //false

  • Object转 Boolean
// 使用Boolean()
Boolean({name:'a'})    //true

// 使用 !!x
!!{name:'a'}   //true

注意事项

falsy

在JavaScript中,除了false本身之外,有五个特殊的值,这五个值转换成Boolean一定是false,除此之外都是true

  • 五个falsy值:
    • 0
    • undefined
    • null
    • ''
    • NaN

除此之外,其他的数据类型转化成null或者undefined,都是直接赋值null或者undefined就可以了。

关于JavaScript中的数据类型转化就到这里了,下一篇博文准备讲讲JS中的内存存储、深浅拷贝等内容。

原文地址:https://www.cnblogs.com/No-harm/p/9511189.html