Skip to content
On this page

JavaScript数据类型转换

  1. 其他的数据类型如何转换为String
  2. 其他的数据类型如何转换为Number
  3. 其他的数据类型如何转换为Boolean?
  4. 自动转换数据类型什么情况下会发生?

1、强制转换

1.1 其他的数据类型转换为String

  • toString()方法nullundefined这两个值没有toString
  • String()函数:会将null直接转换为"null",将undefined 直接转换为"undefined"
js
// 1、toString()
var a = 123
a.toString()//"123"
var b = null;
b.toString()//"报错"
var c = undefined
c.toString()//"报错"
var iNum = 10;
alert(iNum.toString(2));        //输出 "1010"
alert(iNum.toString(8));        //输出 "12"
alert(iNum.toString(16));       //输出 "A"

// 2、String()
var a = null
String(a)//"null"
var b = undefined
String(b)//"undefined"
String({a: 1}) // "[object Object]"
String([1, 2, 3]) // "1,2,3"

1.2 其他的数据类型转换为Number

  • Number()函数
    • 字符串:有非数字的内容,则转换为NaN;空串或是全为空格,则转换为0
    • 布尔值:true转成1,false转成0
    • undefined:转成NaN
    • null:转成0
    • number:能识别负的十六进制,也能识别0开头的八进制,返回值永远是十进制值
    • 对象:返回NaN,除非是包含单个数值的数组
  • parseInt() & parseFloat():专门用来对付字符串
js
// 1、Number()
//①字符串转数字
Number('324') // 324
Number('324abc') // NaN
Number('') // 0
//②布尔值转数字
Number(true) // 1
Number(false) // 0
//③undefined转数字
Number(undefined) // NaN
//④null转数字
Number(null) // 0
//⑤其他进制转十进制
Number(3.15);    //3.15
Number(023);     //19
Number(0x12);    //18
Number(-0x12);   //-18
//对象
Number({a: 1}) // NaN
Number([1, 2, 3]) // NaN
Number([5]) // 5

// 2、parseInt()&parseFloat()
console.log(parseInt('.21'));        //NaN
console.log(parseInt("10.3"));        //10
console.log(parseFloat('.21'));      //0.21
console.log(parseFloat('.d1'));       //NaN
console.log(parseFloat("10.11.33"));  //10.11
console.log(parseFloat("4.3years"));  //4.3
console.log(parseFloat("He40.3"));    //NaN
console.log(parseInt("13"));          //13
console.log(parseInt("11",2));        //3
console.log(parseInt("17",8));        //15
console.log(parseInt("1f",16));       //31

1.3 其他的数据类型转换为Boolean

  • Boolean()函数

    • false空字符串("")、null、undefined、+0、-0 和 NaN

    • 其他的都是 true,空数组、空对象转换为布尔类型也是 true,甚至连false对应的布尔对象new Boolean(false)也是true

js
Boolean(undefined) // false
Boolean(null) // false
Boolean(0) // false
Boolean(NaN) // false
Boolean('') // false

Boolean({}) // true
Boolean([]) // true
Boolean(new Boolean(false)) // true

2、自动转换

2.1 自动转换为String

  • 字符串的加法运算
js
'5' + 1 // '51'
'5' + true // "5true"
'5' + false // "5false"
'5' + {} // "5[object Object]"
'5' + [] // "5"
'5' + function (){} // "5function (){}"
'5' + undefined // "5undefined"
'5' + null // "5null"

2.2 自动转换为Number

  • 算数运算符 +- */
  • 除了字符串的加法运算
js
true + 1 // 2
2 + null // 2
undefined + 1 // NaN
2 + NaN // NaN 任何值和NaN做运算都得NaN
'5' - '2' // 3
'5' * '2' // 10
true - 1  // 0
'1' - 1   // 0
'5' * []    // 0
false / '5' // 0
'abc' - 1   // NaN

+'abc' // NaN
-'abc' // NaN
+true // 1
-false // 0

2.3 自动转换为Boolean

  • JavaScript 遇到预期为布尔值的地方(比如if语句的条件部分),就会将非布尔值的参数自动转换为布尔值。
  • 逻辑运算符 !
js
if ('abc') {
  console.log('hello')
}  // "hello"