前端基礎——js數據類型及判斷方法

一、數據類型

  我們通常熟知的數據類型有六種,包括5種基本數據類型(Number, String, Boolean, Undefined, Null)和一種引用數據類型(Object)。ES6又新增了一個基本數據類型Symbol,所以現在應該是七種數據類型。

  注:有些地方會把引用類型分爲對象(Object)、數組(Array)、函數(Function)三種,還有博客中提到了chrome 67中的新功能BigInt類型,我這裏暫時不算進去。

1、Number

數字類型,包括整數和浮點數。

有一個特殊的值NaN,即非數值。js 規定NaN不等於NaN,可以 isNaN() 來檢測是否是非數值型

2、String

字符串類型,單雙引號都行。

3、Boolean

布爾類型,只有兩個值,true和false。

4、Undefined

聲明瞭變量,但是沒有初始化,則這個變量的類型就是undefined,且其默認初始化值爲undefined。

5、Null

null類型的默認值是null,從邏輯角度講,是表示一個空對象指針。

區分undefined和null——當一個變量聲明後,未初始化,則該值爲undefined;如果這個值是爲了保存對象,則修改默認初始化值爲null。 所以當檢測其類型時,會顯示類型爲object。

6、Object(Data、Function、Array等)

該類型實例化的對象,是一組數據和功能(函數)的集合。

實例化對象的過程有兩種,一種是通過new操作符,一種是通過對象字面量表示法。

Array()、Date()、function()類型,都是從object繼承的。

7、Symbol(ES6 新增)

Symbol 類型本質上是一種唯一標識符,可用作對象的唯一屬性名。

唯一性

Symbol 類型的對象永遠不相等,即使是用同一個變量生成的值也不相等。

隱藏性

for···in,object.keys() 不能訪問,可以用專門針對Symbol的方法來獲取。

 

Symbol 類型的一些應用和參考

https://www.cnblogs.com/linziwei/p/10818101.html

https://blog.csdn.net/qq_33408245/article/details/82953143

二、判斷方法

1、typeof

typeof可以區分一部分數據類型,結果如下:

typeof   123   //Number

typeof   'abc'  //String

typeof    true       //Boolean

typeof    undefined   //Undefined

typeof Symbol() //Symbol

typeof
null //Object

typeof { } //Object

typeof [ ] //Object

typeof console.log() //Function

 

2、判斷null、object和array

從上面的結果可以看出,用typeof檢測 null、數組、對象的結果都是Object,所以需要用其他方法區分他們的類型。

判斷null

  可以用===null來判斷。

判斷object和array

① isArray

Array.isArray([])  //true
Array.isArray({})  //false

② instanceof

[] instanceof Array   //true
{} instanceof Array   //false

③ constructor

{}.constructor    //返回object
[].constructor    //返回Array

④ Object.prototype.toString.call

Object.prototype.toString.call([])   //["object Array"]
Object.prototype.toString.call({})   //["object Object"]

 

END-------------------------------

○延伸兩句○

深拷貝:修改新變量的值不會影響原有變量的值。默認情況下基本數據類型都是深拷貝。
淺拷貝:修改新變量的值會影響原有的變量的值。默認情況下引用類型都是淺拷貝。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章