js中的堆和棧

2021-10-09 15:48:13 字數 492 閱讀 2876

今天又去溫故了一下堆和棧,就記錄一下自己的理解吧

說堆和棧之前先說說js的資料型別:

基本資料型別:number, string, boolean, null, undefined

復合資料型別:object,array

我們的基本資料型別就是儲存在棧中的

// eg:

var name =

"張三"

var copyname = name

// 棧記憶體: 當我們通過關鍵字var乙個變數出來的時候,其實就是在棧中開闢了乙個空間,然後將值放進去,當我們要使用棧記憶體中的值的時候,系統會給複製我們需要的內容,然後在賦值給我們需要的地方

var obj =

var objcopy = obj

// 堆記憶體 :堆一般用來存物件的,堆和棧的最明顯的區別就是,當我們要使用棧中的值的時候,我們採用的賦址的方式,等於給了乙個新的指標,指標指向的位置就是我們的內容

js棧和堆的區別

一 堆 heap 和棧 stack 棧 stack 會自動分配記憶體空間,會自動釋放。堆 heap 動態分配的記憶體,大小不定也不會自動釋放。二 基本型別和引用型別 基本型別 簡單的資料段,存放在棧記憶體中,佔據固定大小的空間。引用型別 指那些可能由多個值構成的物件,儲存在堆記憶體中,包含引用型別的...

js堆記憶體和棧記憶體

var a 12 1.先宣告乙個變數a 沒有賦值 預設是undefined 2.在當前作用域中開闢乙個位置儲存12 這個值 3.讓變數a和12關聯在一起 定義 賦值 任意數求和 function sum var total null for var i 0 i當棧記憶體被銷毀,儲存的那些基本值也就跟...

簡單回顧js中的堆記憶體和棧記憶體

let a 20 let b a b 10 console.log a,b a 20,b 10 在上面的 片段中,a 20,b 10是毋庸置疑,因為number是基礎資料型別,值存在於棧中,對於b的重新賦值並不會影響到a,再來看另乙個例子。let obj let a obj a.a 20 conso...