JS里的数据类型转换
众所周知,JS的数据数据类型是动态的,也就是说没办法在编译时就确定变量的类型,只能在运行时确定。
JS的数据类型
JS里有7种数据类型,分别是string,number,boolean,null,undefined,symbol,object。其中除了object是复杂类型外,其余均为简单类型。这7种类型可以互相转换。我们来看看几种常见的场景。
转换为字符串
数字转字符串
- String()
String(1) //'1'
```
2. toString()
```js
(1).toString() //'1'
```
3. 1 + ''
```js
1 + '' //'1'
```
#### 布尔值转字符串
1. String()
```js
String(true)
```
2. toString()
```js
true.toString() //'true'
```
3. true + ''
```js
true + '' //'true'
```
#### null 转字符串
1. String(null)
```js
String(null) //'null'
```
2. null + ''
```js
null + ''
```
#### undefined 转字符串
1. String(undefined)
```js
String(undefined) //'undefined'
```
2. undefined + ''
```js
undefined + ''
```
#### object转字符串
1. String
```js
String(obj) //'[object Object]'
```
2. toString
```js
var obj = {}
obj.toString() //'[object Object]'
```
3. *+* ''
```js
var obj = {}
obj + '' //'[object Object]'
```
### 总结
转换为字符串有*String()*,*toString()*,+ ''三种方法,其中toString()不能转换null和undefined,String()和 + ‘’可以处理所有情况
### 转换为布尔值
```js
Boolean(1) //true
Boolean('abc') //true
!!1 //true
!!null //false
!!undefined //false
!!{} //true
五个falsy值
除了0,NaN, '',null,undefined五个值转为布尔值时为false,其他值均为true,所有对象转为布尔值均为true
总结
可以使用Boolean()或者两次取反!!将其他类型转换为布尔值
转换为数字
字符串转数字
Number('1') //1
parseInt('1',10) //1,第二个参数10表示转换成10进制数
parseFloat('1.23') //1.23
'1' - 0 //1
+ '1' //1
布尔转数字
Number(true) //1
+ true //1
+ false //0
null转数字
Number(null) //0
+ null //0
undefined转数字
Number(undefined) //0
+ undefined //0
总结
需要注意的是,Number()转数字是整体转,转不了就是NaN,而parseInt()是尽可能转
Number('1s') //NaN
parseInt('1s') //1

浙公网安备 33010602011771号