国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

詳解JavaScript的內存空間、賦值和深淺拷貝

2024-05-06 15:40:30
字體:
來源:轉載
供稿:網友

JavaScript的內存空間

在JavaScript中,每一個數據都需要一個內存空間。內存空間分為兩種,棧內存(stack)與堆內存(heap)

棧是系統自動分配的內存空間,由系統自動釋放,堆則是動態分配的內存,大小不定不會自動釋放。

基礎數據類型

JavaScript中的基礎數據類型,這些值都有固定的大小,保存在棧內存中,由系統自動分配存儲空間在棧內存空間的值,我們可以直接進行操作,因此基礎數據類型都是按照值訪問

在棧內存中的數據發生復制的行為時,系統會自動為新變量開辟一個新的內存空間,當復制執行后,兩個內存空間的值就互不影響,改變其中一個不會影響另一個

棧內存空間數據復制示例var a = `I am variable a`;var b = a; console.log(b); //`I am variable a`b = `I am variable b`;console.log(a); //`I am variable a`console.log(b); //`I am variable b`

引用數據類型

引用類型的值是保存在堆內存中的對象,在JavaScript中我們不能直接操作對象的堆內存空間。因為引用類型的值都是按引用訪問的,所以在操作對象時,實際上是操作對象的引用而不是實際的對象。引用可以理解為保存在棧內存中的一個地址,該地址指向堆內存中的一個實際對象

引用類型值的復制,系統會為新的變量自動分配一個新的棧內存空間這個棧內存空間保存著與被復制變量相同的指針,盡管他們在棧內存中的內存空間的位置互相獨立但是在堆內存中訪問到的對象實際上是同一個,因此,當我們改變其中一個對象的值時,實際上就是改變原來的對象

棧內存空間保存指針(地址),堆內存空間保存實際的對象,我們通過變量訪問對象時,實際上訪問的是對象的引用(地址)

內存中的棧區域存放變量(基本類型的變量包括變量聲明和值)以及指向堆區域存儲位置的指針(引用類型的變量包括變量聲明和指向內容的指針)

var a = {  name : `I am object a`,  type : 'object'}var b = a;console.log(b);// {name: "I am object a", type: "object"}b.name = `I am object b`;console.log(a);// {name: "I am object b", type: "object"}console.log(b);// {name: "I am object b", type: "object"}

基本類型總結

基本數據類型:

包括:null、undefined、number、string、boolean、symbol(es6)

存放位置:內存中的棧區域中

比較:值的比較,判斷是否相等,如果值相等,就相等。一般使用===進行比較,因為==會進行類型的轉換

拷貝:賦值(通過(=)賦值操作符 賦值),賦值完成后,兩個變量之間就沒有任何關系了,改變其中一個變量的值對另一個沒有任何影響

引用類型總結

引用數據類型:

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 巴里| 新田县| 札达县| 贵溪市| 谷城县| 和顺县| 阜平县| 布拖县| 宁晋县| 揭阳市| 马边| 宜君县| 西盟| 区。| 宜章县| 宣威市| 沙湾县| 富蕴县| 丰原市| 马公市| 晋宁县| 武义县| 本溪市| 富民县| 颍上县| 图片| 弋阳县| 南木林县| 大同市| 南投县| 永登县| 额尔古纳市| 新乡市| 青海省| 莎车县| 普兰县| 静乐县| 南华县| 乳源| 彰武县| 新蔡县|