成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

JavaScript-原始值和引用值

EsgynChina / 949人閱讀

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

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

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

(2)存儲(chǔ)在棧(stack)中的簡(jiǎn)單數(shù)據(jù)段,也就是說,它們的值直接存儲(chǔ)在變量訪問的位置。

(3)注意

在許多語言中,字符串都被看作引用類型,而非原始類型,因?yàn)樽址拈L(zhǎng)度是可變的。ECMAScript 打破了這一傳統(tǒng)。

1.2 引用值

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

(2)存儲(chǔ)在堆(heap)中的對(duì)象,也就是說,存儲(chǔ)在變量處的值是一個(gè)指針(point),指向存儲(chǔ)對(duì)象的內(nèi)存處。

二、棧和堆 2.1 原始值存儲(chǔ)在棧中

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

2.2 引用值存儲(chǔ)在堆中

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

2.3 圖示

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

4.4 說明

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

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

4.5 擴(kuò)展

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

5.4 說明

(1)原始值 a 和 b 的數(shù)據(jù)類型不同,但也可以進(jìn)行值的比較。(在值比較之前,自動(dòng)進(jìn)行了數(shù)據(jù)類型的 隱式轉(zhuǎn)換

== → 只比較值

=== → 不僅比較值,還比較數(shù)據(jù)類型

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

閱讀更多

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/93823.html

相關(guān)文章

  • JS語言核心——“詞法結(jié)構(gòu)及類型、變量”

    摘要:詞法結(jié)構(gòu)字符集字符集程序是用字符集編寫的注釋支持兩種格式的注釋單行注釋另一個(gè)注釋也是一個(gè)注釋這是一個(gè)多行注釋直接量直接量程序中直接使用的數(shù)據(jù)值標(biāo)識(shí)符和保留字標(biāo)識(shí)符就是一個(gè)名字,用來對(duì)變量和函數(shù)命名,或者用作代碼中某些循環(huán)語句中的跳轉(zhuǎn)位置的標(biāo) 1 詞法結(jié)構(gòu) 1.1 字符集 字符集:JS程序是用Unicode字符集編寫的 1.2 注釋 js支持兩種格式的注釋 // 單行注釋 /* 另一...

    Labradors 評(píng)論0 收藏0
  • JavaScript的深淺拷貝

    摘要:實(shí)際上,是禁止這樣做的。傳值和傳址基本數(shù)據(jù)類型賦值基本數(shù)據(jù)類型的賦值是在內(nèi)存中新開辟一段棧內(nèi)存,然后再把再將值賦值到新的棧中。結(jié)果見輸出,可以看出來,無論是修改賦值得到的對(duì)象和淺拷貝得到的都會(huì)改變?cè)紨?shù)據(jù)。 存儲(chǔ)問題:深拷貝和淺拷貝的主要區(qū)別:在內(nèi)存中的存儲(chǔ)類型(堆和棧)不同堆:動(dòng)態(tài)分配的內(nèi)存,大小不定也不會(huì)自動(dòng)釋放棧:自動(dòng)分配的內(nèi)存,由系統(tǒng)自動(dòng)釋放數(shù)據(jù)類型: 基本數(shù)據(jù)類型: jav...

    zhjx922 評(píng)論0 收藏0
  • 基礎(chǔ)回顧-javascript數(shù)據(jù)類型

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

    codergarden 評(píng)論0 收藏0
  • 細(xì)說 Javascript 對(duì)象篇(二) : 原型對(duì)象

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

    lansheng228 評(píng)論0 收藏0
  • 變量和作用域

    摘要:當(dāng)代碼在一個(gè)環(huán)境中執(zhí)行時(shí),會(huì)創(chuàng)建變量對(duì)象的一個(gè)作用域鏈,作用域鏈的用途,是保證對(duì)執(zhí)行環(huán)境有權(quán)訪問的所有變量和函數(shù)的有序訪問。作用域鏈的下一個(gè)變量對(duì)象則來自下一個(gè)包含環(huán)境。 前言 JavaScript中變量是松散類型,這樣它只在特定的時(shí)間內(nèi)用于保存一個(gè)特定的值。由于不存在定義某個(gè)變量必須要保存何種數(shù)據(jù)類型的規(guī)則,變量的值和其數(shù)據(jù)類型可以在腳本的生命周期內(nèi)改變。 1. 基本類型和引用類型的...

    Codeing_ls 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<