国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

JavaScript-原始值和引用值

EsgynChina / 939人閱讀

摘要:一原始值和引用值的概念在中,變量可以存在兩種類型的值,即原始值和引用值。二棧和堆原始值存儲在棧中為變量賦值時,的解釋程序必須判斷該值是原始類型,還是引用類型。

一、原始值和引用值的概念
在 ECMAScript 中,變量可以存在兩種類型的值,即原始值引用值
1.1 原始值

(1)原始值指的是 原始類型 的值,也叫 基本類型,例如 Number、Stirng、Boolean、Null、Underfined 。

(2)存儲在棧(stack)中的簡單數據段,也就是說,它們的值直接存儲在變量訪問的位置

(3)注意

在許多語言中,字符串都被看作引用類型,而非原始類型,因為字符串的長度是可變的。ECMAScript 打破了這一傳統。

1.2 引用值

(1)引用值指的是 引用類型 的值,例如 Object、Function、Array、Date、RegExp 。

(2)存儲在堆(heap)中的對象,也就是說,存儲在變量處的值是一個指針(point),指向存儲對象的內存處

二、棧和堆 2.1 原始值存儲在棧中

為變量賦值時,ECMAScript 的解釋程序必須判斷該值是原始類型,還是引用類型。要實現這一點,解釋程序則需嘗試判斷該值是否為 ECMAScript 的原始類型之一,即 Undefined、Null、Boolean、Number 和 String 型。由于這些原始類型占據的空間是固定的,所以可將他們存儲在較小的內存區域 - 棧中。這樣存儲便于迅速查尋變量的值。

2.2 引用值存儲在堆中

如果一個值是引用類型的,那么它的存儲空間將從堆中分配。由于引用值的大小會改變,所以不能把它放在棧中,否則會降低變量查尋的速度。相反,放在變量的棧空間中的值是該對象存儲在堆中的地址。地址的大小是固定的,所以把它存儲在棧中對變量性能無任何負面影響。

2.3 圖示

三、原始值和引用值的不同 3.1 賦值方式 3.2 值是否可變 3.3 比較方式不同 四、賦值方式和值是否可變 4.1 原始值是以值的拷貝方式賦值,值是不可變的 4.2 引用值是以引用的拷貝方式賦值,值是可變的 4.3 Example

4.4 說明

(1)原始值賦值 → 其實是將值拷貝一份并賦值給新的變量,這個值就是副本,他和原始值是互相獨立的,改變其中一個值不會影響到其他的值。

(2)引用值賦值 → 當一個引用類型,例如一個對象,使用 = 將其賦值給另一個變量,實際上是其對象的地址引用賦值給新的變量,這兩個變量都指向同一個地址引用,他們有相同的地址。所以若改變其中一個變量(的地址引用指向的對象),另一個變量(的地址引用指向的同一個對象)也將改變。

4.5 擴展

五、比較方式不同 5.1 原始值的比較是 的比較 5.2 引用值的比較是 引用 的比較 5.3 Example

5.4 說明

(1)原始值 a 和 b 的數據類型不同,但也可以進行值的比較。(在值比較之前,自動進行了數據類型的 隱式轉換

== → 只比較值

=== → 不僅比較值,還比較數據類型

(2)引用值 obj1 和 obj2 分別引用的是存放在堆內存中的兩個不同的對象,所以 obj1 和 obj2 的值(地址引用)不一樣。

閱讀更多

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/93823.html

相關文章

  • JS語言核心——“詞法結構及類型、變量”

    摘要:詞法結構字符集字符集程序是用字符集編寫的注釋支持兩種格式的注釋單行注釋另一個注釋也是一個注釋這是一個多行注釋直接量直接量程序中直接使用的數據值標識符和保留字標識符就是一個名字,用來對變量和函數命名,或者用作代碼中某些循環語句中的跳轉位置的標 1 詞法結構 1.1 字符集 字符集:JS程序是用Unicode字符集編寫的 1.2 注釋 js支持兩種格式的注釋 // 單行注釋 /* 另一...

    Labradors 評論0 收藏0
  • JavaScript的深淺拷貝

    摘要:實際上,是禁止這樣做的。傳值和傳址基本數據類型賦值基本數據類型的賦值是在內存中新開辟一段棧內存,然后再把再將值賦值到新的棧中。結果見輸出,可以看出來,無論是修改賦值得到的對象和淺拷貝得到的都會改變原始數據。 存儲問題:深拷貝和淺拷貝的主要區別:在內存中的存儲類型(堆和棧)不同堆:動態分配的內存,大小不定也不會自動釋放棧:自動分配的內存,由系統自動釋放數據類型: 基本數據類型: jav...

    zhjx922 評論0 收藏0
  • 基礎回顧-javascript數據類型

    摘要:棧區由編譯器自動分配釋放,存放函數的參數值,局部變量的值等。其操作方式類似于數據結構中的棧。屬性返回對創建此對象的構造函數的引用。所有的和都是宿主對象參考高級程序設計堆和棧的概念和區別全面解析中的數據類型與類型轉換 數據類型 數據類型劃分 javascript中定義了6中基本數據類型(原始值類型),和一種復雜數據類型(引用類型),所謂復雜類型,其本質是由無序的名值對(key:val...

    codergarden 評論0 收藏0
  • 細說 Javascript 對象篇(二) : 原型對象

    摘要:并沒有類繼承模型,而是使用原型對象進行原型式繼承。我們舉例說明原型鏈查找機制當訪問一個對象的屬性時,會從對象本身開始往上遍歷整個原型鏈,直到找到對應屬性為止。原始類型有以下五種型。此外,試圖查找一個不存在屬性時將會遍歷整個原型鏈。 Javascript 并沒有類繼承模型,而是使用原型對象 prototype 進行原型式繼承。 盡管人們經常將此看做是 Javascript 的一個缺點,然...

    lansheng228 評論0 收藏0
  • 變量和作用域

    摘要:當代碼在一個環境中執行時,會創建變量對象的一個作用域鏈,作用域鏈的用途,是保證對執行環境有權訪問的所有變量和函數的有序訪問。作用域鏈的下一個變量對象則來自下一個包含環境。 前言 JavaScript中變量是松散類型,這樣它只在特定的時間內用于保存一個特定的值。由于不存在定義某個變量必須要保存何種數據類型的規則,變量的值和其數據類型可以在腳本的生命周期內改變。 1. 基本類型和引用類型的...

    Codeing_ls 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<