亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

JS引用數據類型的區別有什么

發布時間:2021-08-31 02:33:18 來源:億速云 閱讀:126 作者:chen 欄目:開發技術

這篇文章主要講解了“JS引用數據類型的區別有什么”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“JS引用數據類型的區別有什么”吧!

1、棧和堆

  stack為自動分配的內存空間,它由系統自動釋放;而heap則是動態分配的內存,大小也不一定會自動釋放

2、數據類型

  JS分兩種數據類型:

  基本數據類型:Number、String、Boolean、Null、Undefined、Symbol,這些類型可以直接操作保存在變量中的實際值。

  引用數據類型:Object

3、基本數據類型

  基本數據類型是指存放在棧中的簡單數據段,數據大小確定,內存空間大小可以分配,它們是直接按值存放的,所以可以直接按值訪問

  vara=10;

  varb=a;

  b=20;

  console.log;//10值

  console.log;//20值

引用數據類型

  引用類型是存放在堆內存中的對象,變量其實是保存的在棧內存中的一個指針,這個指針指向堆內存。

  引用類型數據在棧內存中保存的實際上是對象在堆內存中的引用地址。通過這個引用地址可以快速查找到保存中堆內存中的對象

  varobj1=newObject();varobj2=obj1;obj2.name="我有名字了";console.log;//我有名字了

  說明這兩個引用數據類型指向了同一個堆內存對象。obj1賦值給obj2,實際上這個堆內存對象在棧內存的引用地址復制了一份給了obj2,但是實際上他們共同指向了同一個堆內存對象,所以修改obj2其實就是修改那個對象,所以通過obj1訪問也能訪問的到。

  vara=;

  varb=a;//傳址,對象中傳給變量的數據是引用類型的,會存儲在堆中;

  varc=a;//傳值,把對象中的屬性/數組中的數組項賦值給變量,這時變量C是基本數據類型,存儲在棧內存中;改變棧中的數據不會影響堆中的數據

  alert;//1,2,3,4,5

  alert;//1

  //改變數值

  b=6;

  c=7;

  alert;//6

  alert;//1

  從上面我們可以得知,當我改變b中的數據時,a中數據也發生了變化;但是當我改變c的數據值時,a卻沒有發生改變。

  這就是傳值與傳址的區別。因為a是數組,屬于引用類型,所以它賦予給b的時候傳的是棧中的地址,而不是堆內存中的對象。而c僅僅是從a堆內存中獲取的一個數據值,并保存在棧中。所以b修改的時候,會根據地址回到a堆中修改,c則直接在棧中修改,并且不能指向a堆內存中。

  

感謝各位的閱讀,以上就是“JS引用數據類型的區別有什么”的內容了,經過本文的學習后,相信大家對JS引用數據類型的區別有什么這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

js
AI

文山县| 甘肃省| 东安县| 衡南县| 高密市| 广丰县| 泰州市| 图木舒克市| 同德县| 郑州市| 余庆县| 南岸区| 四平市| 岳阳市| 彩票| 榆树市| 新建县| 石泉县| 山东| 奉化市| 扬中市| 青冈县| 卢湾区| 沂源县| 辽源市| 沿河| 日土县| 长武县| 华坪县| 济宁市| 南昌市| 苏尼特右旗| 石楼县| 郴州市| 承德市| 工布江达县| 平乐县| 中卫市| 大丰市| 华蓥市| 准格尔旗|