JS 資料型別總結

見面那天有發表於2019-05-07

###JS 資料型別總結     JavaScript共有七種資料型別,包括六種基本資料型別(number、string、boolean、null、undefined、symbol)和一種複雜資料型別(物件型別)。

1、number(數字型別)

number型別即數字型別,數字可以帶小數點也可以不帶,也可以通過科學計數法來寫。

var y=123e5;      // 12300000
var z=123e-5;     // 0.00123
複製程式碼

js有一個精度問題坑:

var a = 0.1;
var b = 0.2;
console.log(a+b))//0.30000000000000004
複製程式碼

本來0.1+0.2應該等於0.3可控制檯列印的卻是0.30000000000000004,這是因為js採取了雙精度儲存。小數前端一般的解決方法是先擴大倍數相加後再除以倍數:

(0.1*10 + 0.2*10) / 10 == 0.3 
複製程式碼

2、string(字串型別)

字串型別可以是引號中的任意文字,可使用單引號或雙引號。

var str = 'hello'
複製程式碼

3、boolean(布林型別)

布林型別有兩種值 true或false,常用於判斷中。

4、null

null型別通常是一個變數或函式未宣告導致的,null型別也有一個bug是:

console.log(typeof null) //object
複製程式碼

這也是js一直都存在的bug,注意就好。

5、undefind

undefind通常是一個變數已經宣告,但並未賦值導致的。

var a ;
console.log(a)//undefined
複製程式碼

6、symbol

symbol是ES6新增的,表示獨一無二的值,由Symbol()函式生成。

console.log(Symbol('a') === Symbol('a'));//false
複製程式碼

7、物件型別

複雜資料型別跟前六種簡單資料型別相比,不同在於簡單資料型別變數中儲存的直接是變數所在的地址,而複雜資料型別儲存的是指標。所以就出現了深淺拷貝的問題。關於深淺拷貝的問題,我會專門再寫一篇文章去介紹。

 var people = {
      name: '小明'
    }
var peoplea = people;
peoplea.name = '小白';
console.log(peoplea.name)//小白
console.log(people.name)//小白
複製程式碼

我們本來期望只改變peoplea的name,現在連people的name都改變了,這就是複雜型別儲存的是指標導致的。

相關文章