本篇文章主要和大家分享了一些ECMAScript 原始值和引用值的知識,有需要的朋友們可以參考一下
在ECMAScript 中,變數可以存在兩種類型的值,即原始值和引用值。
(1)原始值指的是原始型別 的值,也叫基本型別,例如Number、Stirng、 Boolean、Null、Underfined 。
(2)儲存在堆疊(stack)中的簡單資料段,也就是說,它們的值直接儲存在變數存取的位置。
(3)注意
在許多語言中,字串都被看作引用類型,而非原始類型,因為字串的長度是可變的。 ECMAScript 打破了這項傳統。
(1)引用值指的是 引用型別 的值,例如 Object、Function、Array、Date、RegExp 。
(2)儲存在堆(heap)中的對象,也就是說,儲存在變數處的值是一個指針(point),指向存儲物件的記憶體處。
為變數賦值時,ECMAScript 的解釋程式必須判斷該值是原始類型,還是參考類型。要實現這一點,解釋程式則需嘗試判斷該值是否為 ECMAScript 的原始類型之一,即 Undefined、Null、Boolean、Number 和 String 型。由於這些原始型別佔據的空間是固定的,所以可將他們儲存在較小的記憶體區域 - 堆疊中。這樣儲存便於迅速查尋變數的值。
如果一個值是引用類型的,那麼它的儲存空間將從堆中分配。由於引用值的大小會改變,所以不能把它放在堆疊中,否則會降低變數查尋的速度。相反,放在變數的堆疊空間中的值是該物件儲存在堆中的位址。位址的大小是固定的,所以把它儲存在堆疊中對變數效能無任何負面影響。
(1)原始值賦值→ 其實是將值拷貝一份並賦值給新的變量,這個值就是副本,他和原始值是互相獨立的,改變其中一個值不會影響到其他的值。
(2)引用值賦值→ 當一個引用類型,例如一個對象,使用= 將其賦值給另一個變量,實際上是其對象的地址引用賦值給新的變量,這兩個變數都指向同一個位址引用,他們有相同的位址。所以若改變其中一個變數(的位址引用指向的物件),另一個變數(的位址引用指向的同一個物件)也會改變。
(1)原始值a 和b 的資料型別不同,但也可以進行值的比較。 (在值比較之前,自動進行了資料型別的隱含轉換)
#== → 只比較值
=== → 不僅比較值,還比較資料型別
(2)引用值obj1 和obj2 分別引用的是存放在堆記憶體中的兩個不同的物件,所以obj1 和obj2 的值(位址引用)不一樣。
閱讀更多
在 ECMAScript 中,變數可以存在兩種類型的值,即原始值和引用值。
(1)原始值指的是原始型別 的值,也叫基本型別,例如Number、Stirng、Boolean、Null、Underfined 。
(2)儲存在堆疊(stack)中的簡單資料段,也就是說,它們的值直接儲存在變數存取的位置。
(3)注意
在許多語言中,字串都被看作引用類型,而非原始類型,因為字串的長度是可變的。 ECMAScript 打破了這項傳統。
(1)引用值指的是 引用型別 的值,例如 Object、Function、Array、Date、RegExp 。
(2)儲存在堆(heap)中的對象,也就是說,儲存在變數處的值是一個指針(point),指向存儲物件的記憶體處。
為變數賦值時,ECMAScript 的解釋程式必須判斷該值是原始型別,還是參考型別。要實現這一點,解釋程式則需嘗試判斷該值是否為 ECMAScript 的原始類型之一,即 Undefined、Null、Boolean、Number 和 String 型。由於這些原始型別佔據的空間是固定的,所以可將他們儲存在較小的記憶體區域 - 堆疊中。這樣儲存便於迅速查尋變數的值。
如果一個值是引用類型的,那麼它的儲存空間將從堆中分配。由於引用值的大小會改變,所以不能把它放在堆疊中,否則會降低變數查尋的速度。相反,放在變數的堆疊空間中的值是該物件儲存在堆中的位址。位址的大小是固定的,所以把它儲存在堆疊中對變數效能無任何負面影響。
(1)原始值賦值→ 其實是將值拷貝一份並賦值給新的變量,這個值就是副本,他和原始值是互相獨立的,改變其中一個值不會影響到其他的值。
(2)引用值賦值→ 當一個引用類型,例如一個對象,使用= 將其賦值給另一個變量,實際上是其對象的地址引用賦值給新的變量,這兩個變數都指向同一個位址引用,他們有相同的位址。所以若改變其中一個變數(的位址引用指向的物件),另一個變數(的位址引用指向的同一個物件)也會改變。
(1)原始值a 和b 的資料型別不同,但也可以進行值的比較。 (在值比較之前,自動進行了資料型別的隱含轉換)
#== → 只比較值
=== → 不僅比較值,還比較資料型別
(2)引用值obj1 和obj2 分別引用的是存放在堆記憶體中的兩個不同的物件,所以obj1 和obj2 的值(位址引用)不一樣。
相關推薦:
#以上是ECMAScript 原始值和引用值 - JavaScript ING的詳細內容。更多資訊請關注PHP中文網其他相關文章!