JavaScript變量
松散類型
的本質,決定了它隻是在特定時間用于儲存特定值的一個名字而已,可以了解為變量占了一個坑,具體填的是黃金還是泥土就要看自身造化了……
ECMAScript變量可能包含兩種不同資料類型的值:
基本類型值
和
引用類型值
。基本類型值指的是簡單的資料段,而引用類型值指那些可能由多個值構成的對象。
基本資料類型
基本資料類型有六種:Undefined、Null、Boolean、Number、String和Symbol。
這五種基本資料類型是按值通路的,因為可以操作儲存在變量中的實際的值。
基本資料類型比較簡單,這裡提供一些注意點:
- Undefined類型:隻有一個值(即undefined),變量聲明但未對其初始化,該變量的值就是undefined。
- Null類型:隻有一個值(即null),null值表示一個空對象指針。
-
Boolean類型:隻有兩個字面值(即true和false)。
轉型函數Boolean()
- Number類型:使用IEEE754格式來表示整數和浮點數值,其中有一個特殊數值NaN,用于表示一個本來要傳回數值的操作數但未傳回數值的情況。
轉型函數Number()、parseInt()、parseFloat()
-
String類型:轉型函數toString()、String()
null和undefined沒有toString()方法,是以用String()函數可以傳回這兩個值的字面量。
typeof操作符
檢測給定變量的資料類型,對一個值使用typeof操作符可能傳回下列某個
字元串
:
- “undefined”——如果這個值未定義
- “boolean”——如果這個值是布爾值
- “string”——如果這個值是字元串
- “number”——如果這個值是數值
- “object”——如果這個值是
對象或null
- “function”——如果這個值是函數
引用類型
引用類型的值是儲存在記憶體中的對象,JavaScript不允許直接通路記憶體中的位置,也就是說不能直接操作對象的記憶體空間。在操作對象時,實際上是在操作對象的引用而不是實際的對象。為此,引用類型的值是按引用通路的。
ECMAScript提供了很多原生引用類型:
- Object類型
- Array類型
- Date類型
- RegExp類型
- Function類型
-
基本包裝類型:3個特殊的引用類型(Boolean、Number和String)
每當讀取一個基本類型值的時候,背景就會建立一個對應的基本包裝類型的對象,進而讓我們能夠調用一些方法來操作這些資料。自動建立的基本包裝類型的對象隻存在于一行代碼的
,然後立即被銷毀,是以我們不能在運作時為基本類型值添加屬性和方法。執行瞬間
- 單體内置對象:Global對象和Math對象。
instanceof操作符
在檢測引用類型的值時,typeof操作符的用處就不大了。通常,我們并不是想知道某個值是對象,而是想知道它是什麼類型的對象。為此,ECMAScript提供了instanceof操作符。文法如下:
所有引用類型的值都是Object的執行個體,是以,在檢測一個引用類型值和Object構造函數時,instanceof操作符始終會傳回true。