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

資訊專欄INFORMATION COLUMN

js隨手筆記-------理解JavaScript中的堆和棧

reclay / 2391人閱讀

摘要:最近由于做的項(xiàng)目需求牽扯到了大量的數(shù)據(jù)處理,于是就想了解一下中的數(shù)據(jù)類型,于是就百度了一下找到了些干貨,在這里精簡下做個(gè)筆記,以方便日后需要的時(shí)候查看這里先說兩個(gè)概念堆棧堆是堆內(nèi)存的簡稱。

最近由于做的項(xiàng)目需求牽扯到了大量的數(shù)據(jù)處理,于是就想了解一下javascript中的數(shù)據(jù)類型,于是就百度了一下找到了些干貨,在這里精簡下做個(gè)筆記,以方便日后需要的時(shí)候查看:
這里先說兩個(gè)概念:1、堆(heap)2、棧(stack)
是堆內(nèi)存的簡稱。
是棧內(nèi)存的簡稱。
說到堆棧,我們講的就是內(nèi)存的使用和分配了,沒有寄存器的事,也沒有硬盤的事。
各種語言在處理堆棧的原理上都大同小異。堆是動(dòng)態(tài)分配內(nèi)存,內(nèi)存大小不一,也不會自動(dòng)釋放。棧是自動(dòng)分配相對固定大小的內(nèi)存空間,并由系統(tǒng)自動(dòng)釋放。

javascript的基本類型就5種:Undefined、Null、Boolean、Number和String,它們都是直接按值存儲在棧中的,每種類型的數(shù)據(jù)占用的內(nèi)存空間的大小是確定的,并由系統(tǒng)自動(dòng)分配和自動(dòng)釋放。這樣帶來的好處就是,內(nèi)存可以及時(shí)得到回收,相對于堆來說,更加容易管理內(nèi)存空間。

javascript中其他類型的數(shù)據(jù)被稱為引用類型的數(shù)據(jù) : 如對象(Object)、數(shù)組(Array)、函數(shù)(Function) …,它們是通過拷貝和new出來的,這樣的數(shù)據(jù)存儲于堆中。其實(shí),說存儲于堆中,也不太準(zhǔn)確,因?yàn)椋妙愋偷臄?shù)據(jù)的地址指針是存儲于棧中的,當(dāng)我們想要訪問引用類型的值的時(shí)候,需要先從棧中獲得對象的地址指針,然后,在通過地址指針找到堆中的所需要的數(shù)據(jù)。

說來也是形象,棧,線性結(jié)構(gòu),后進(jìn)先出,便于管理。堆,一個(gè)混沌,雜亂無章,方便存儲和開辟內(nèi)存空間
傳值與傳址

var arr1 = [1,2,5,8]; 
var arr2 = arr1 ; 
var str1 = arr1[2]; 
console.log(arr2);//1,2,5,8
console.log(str1);//5
arr2[4] = 99; 
str1 = 6; 
console.log(arr1);//1,2,5,8,99
console.log(arr1[2]);//5

上方例子得知,當(dāng)我改變arr2中的數(shù)據(jù)時(shí),arr1中數(shù)據(jù)也發(fā)生了變化,當(dāng)改變str1的數(shù)據(jù)值時(shí),arr1卻沒有發(fā)生改變。為什么?這就是傳值與傳址的區(qū)別。

因?yàn)閍rr1是數(shù)組,屬于引用類型,所以它賦予給arr2的時(shí)候傳的是棧中的地址(相當(dāng)于新建了一個(gè)不同名“指針”),而不是堆內(nèi)存中的對象的值。str1得到的是一個(gè)基本類型的賦值,因此,str1僅僅是從arr1堆內(nèi)存中獲取了一個(gè)數(shù)值,并直接保存在棧中。arr1、arr2都指向同一塊堆內(nèi)存,arr2修改的堆內(nèi)存的時(shí)候,也就會影響到arr1,str1是直接在棧中修改,并且不能影響到arr1堆內(nèi)存中的數(shù)據(jù)。

淺拷貝和深拷貝
上邊說到的賦值方式就是淺拷貝,那么什么叫作深拷貝呢?就是要將arr1的每個(gè)基本類型的數(shù)據(jù)都遍歷一遍,依次的賦值給arr2的對應(yīng)字段。避免產(chǎn)生因?yàn)榈刂芬脦淼膯栴}。

var arr1 = [1,2,5,8]; 
var arr2 = []; 
for(var i=0;i

javascript面向?qū)ο蟮恼Z言本身在處理對象和非對象上就進(jìn)行了劃分,從數(shù)據(jù)結(jié)構(gòu)的角度來講,對象就是棧的指針和堆中的數(shù)值。

本文內(nèi)容借鑒自
鏈接:https://www.jianshu.com/p/5e0...

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

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

相關(guān)文章

  • 和棧

    摘要:百度百科上對堆和棧進(jìn)行了對比分析堆??臻g分配棧操作系統(tǒng)由操作系統(tǒng)自動(dòng)分配釋放,存放函數(shù)的參數(shù)值,局部變量的值等。堆棧緩存方式棧使用的是一級緩存,他們通常都是被調(diào)用時(shí)處于存儲空間中,調(diào)用完畢立即釋放。顯然,堆的效率比棧要低得多。 相信很多程序員對于堆和棧的概念,總是感覺很朦朧,感覺在哪里聽過見過,并沒有深交。 在計(jì)算機(jī)領(lǐng)域,堆棧是一個(gè)不容忽視的概念,我們編寫的C語言程序基本上都要用到。但...

    lscho 評論0 收藏0
  • 理解前端數(shù)據(jù)類型

    摘要:基本數(shù)據(jù)類型的值保存在棧內(nèi)存中的簡單數(shù)據(jù)段,按值訪問。文字常量區(qū)存儲常量字符串保存在棧中保存在棧中,保存在常量區(qū)程序代碼區(qū)存儲程序的二進(jìn)制代碼關(guān)于數(shù)字類型根據(jù)關(guān)于的描述可知,的數(shù)字類型只有一種,使用標(biāo)準(zhǔn)中的雙精度浮點(diǎn)數(shù)來存儲,長度為位。 數(shù)據(jù)類型 基本數(shù)據(jù)類型:String,Boolean,Number,undefined,null,Symbol(ES6)引用數(shù)據(jù)類型:Object,F(xiàn)...

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

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

    codergarden 評論0 收藏0
  • javascript高級程序設(shè)計(jì)》筆記:內(nèi)存與執(zhí)行環(huán)境

    摘要:因此,所有在方法中定義的變量都是放在棧內(nèi)存中的當(dāng)我們在程序中創(chuàng)建一個(gè)對象時(shí),這個(gè)對象將被保存到運(yùn)行時(shí)數(shù)據(jù)區(qū)中,以便反復(fù)利用因?yàn)閷ο蟮膭?chuàng)建成本通常較大,這個(gè)運(yùn)行時(shí)數(shù)據(jù)區(qū)就是堆內(nèi)存。 上一篇:《javascript高級程序設(shè)計(jì)》筆記:繼承近幾篇博客都會圍繞著圖中的知識點(diǎn)展開 showImg(https://segmentfault.com/img/bVY0C4?w=1330&h=618);...

    fuyi501 評論0 收藏0
  • JAVA中和棧的區(qū)別

    摘要:堆內(nèi)存主要作用是存放運(yùn)行時(shí)創(chuàng)建的對象。堆內(nèi)存用來存放由創(chuàng)建的對象和數(shù)組,在堆中分配的內(nèi)存,由虛擬機(jī)的自動(dòng)垃圾回收器來管理。這也是比較占內(nèi)存的原因,實(shí)際上,棧中的變量指向堆內(nèi)存中的變量,這就是中的指針 堆:(對象) 引用類型的變量,其內(nèi)存分配在堆上或者常量池(字符串常量、基本數(shù)據(jù)類型常量),需要通過new等方式來創(chuàng)建。 堆內(nèi)存主要作用是存放運(yùn)行時(shí)創(chuàng)建(new)的對象。(主要用于存放對象,...

    RyanQ 評論0 收藏0

發(fā)表評論

0條評論

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