JavaScript数据类型转换
- 其他的数据类型如何转换为
String
? - 其他的数据类型如何转换为
Number
? - 其他的数据类型如何转换为
Boolean
? - 自动转换数据类型什么情况下会发生?
1、强制转换
1.1 其他的数据类型转换为String
toString()
方法:null
和undefined
这两个值没有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"