JS里的数据类型转换

众所周知,JS的数据数据类型是动态的,也就是说没办法在编译时就确定变量的类型,只能在运行时确定。

JS的数据类型

JS里有7种数据类型,分别是string,number,boolean,null,undefined,symbol,object。其中除了object是复杂类型外,其余均为简单类型。这7种类型可以互相转换。我们来看看几种常见的场景。

转换为字符串

数字转字符串

  1. 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
posted @ 2018-11-06 10:35  Scapelan  阅读(213)  评论(0)    收藏  举报