變數、作用域和記憶體問題

gecko23發表於2014-10-15

JavaScript變數可以用來儲存兩種型別的值:基本型別值和引用型別值。基本型別的值源自以下5種基本資料型別
Undefined、Null、Boolean、Number、String

基本型別值和引用型別值具有以下特點:

  1. 基本型別值在記憶體中佔據固定大小的空間,因此被儲存在棧記憶體中;
  2. 從一個變數向另一個變數複製基本型別的值,會建立這個值的一個副本; 引用型別的值是物件,儲存在堆記憶體中;
  3. 包含引用型別值的變數實際上包含的並不是物件本身,而是一個指向該物件的指標;
  4. 從一個變數向另一個變數複製引用型別的值,複製的其實是指標,因此兩個變數最終都指向同一個物件;
  5. 確定一個值是哪種基本型別可以使用typeof運算子,而確定一個值是哪種引用型別可以使用instanceof運算子。
  6. 所有變數(包括基本型別和引用型別)都存在於一個執行環境(也稱為作用域)當中,這個執行環境決定了變數的生命週期,以及哪一部分程式碼可以訪問其中的變數。

相關文章