成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

JavaScript變量的內存分配,你了解多少?

開發 前端
JavaScript的所有變量(包括函數)在整個處理過程中都是存放在內存中,所以要對一個變量進行處理。首先得為變量分配內存。JavaScript內存分配和其他語言一樣,是根據變量的數據類型來分配內存的,而JavaScript變量的數據類型由所賦的值的類型所決定的。

[[347504]]

 JavaScript的所有變量(包括函數)在整個處理過程中都是存放在內存中,所以要對一個變量進行處理。首先得為變量分配內存。JavaScript內存分配和其他語言一樣,是根據變量的數據類型來分配內存的,而JavaScript變量的數據類型由所賦的值的類型所決定的。JavaScript支持的數據類型可分為兩大類:基本數據類型和復雜數據類型。其中基本數據類型包含了數字(number)類型、字符串(string)類型、布爾(boolean)類型、未定義(undefined)類型、空(null)類型;復雜類型包含了對象(object)類型,在JavaScript中數組、函數都屬于對象類型。除了基本數據類型以外的數據類型全都是對象類型。在JavaScript中,基本數據類型變量分配在棧內存中,其中存放了變量的值,對其是按值訪問的;而對象類型的變量則同時會分配棧內存和堆內存,其中棧內存存放的是地址。堆內存存放的是引用的值,棧內存存放的地址指向堆內存存放的值。對該變量的訪問是按引用來訪問的,即首先讀取到棧內存存放的地址,然后按地址找到堆內存讀取其中的值。

JavaScript之所以按變量的不同數據類型來分配內存,主要原因是棧內存比堆內存小,而且棧內存的大小是固定的,而堆內存大小可以動態變化。基本數據類型的值的大小固定,對象類型的值大小不固定,所以將它們分別存放在棧內存和堆內存是合理的。

  1. function Student (id,sno,name,age){ //函數定義,Student是一個函數變量 
  2.    this.id = id; 
  3.    this.sno = sno; 
  4.    this.name = name
  5.    this.age = age; 
  6. var num = 20; //num  是一個數字變量 
  7. var bol = false; //bol 是一個布爾變量 
  8. var str = "student"; //str 是一個字符串變量 
  9. var obj = {}; //obj是一個對象變量 
  10. var arr = ['a','b']; //arr是一個數組變量  
  11. var student = new Studenta(1,"199706010016","maomin",23); //student是一個對象變量 

上述代碼中的Student變量定義了一個構造函數,函數的定義代碼存放在堆內存中,該內存對應的地址存放在Student函數變量中。構造函數用于創建對象實例,最后一行代碼正是使用了該構造函數來創建了一個名字叫maomin的學生對象實例。學生實例創建完后會返回其在堆內存中分配的地址,該地址被賦給了student變量。

上述代碼中的{}在堆內存中創建了一個空對象,該對象的堆內存中的地址被賦給了obj的變量。['a','b']是一個元素值分別為'a','b'的數組對象,該對象也在堆內存中存放,其對應的地址賦給了arr變量。除了Student、obj、arr和student這幾個變量為對象變量外,其他幾個變量num、bol、str都是基本數據類型的變量,因而它們都存在棧內存中。

基本數據類型的變量值存儲在棧內存,而對象類型變量,包括函數、數組和對象,在棧內存中存儲的只是引用對象的地址,該地址為對象在堆內存分配的地址,因而通過該地址可以找到對象類型的變量值。

 

責任編輯:姜華 來源: 前端歷劫之路
相關推薦

2022-07-29 09:17:46

JavaScriptReactJS學習

2019-08-01 10:44:23

JavaScript框架內存

2021-02-25 07:08:30

JavaScript 前端面試題

2015-11-09 10:44:37

DevOpsIT運維

2020-03-25 08:47:22

智能邊緣邊緣計算網絡

2023-10-25 08:17:06

Lite模式代理類

2023-10-29 08:35:47

AndroidAOP編程

2021-06-06 18:22:04

PprofGopher邏輯

2012-12-27 10:58:24

KVMKVM概念

2023-05-06 08:53:13

2021-04-23 07:27:31

內存分配CPU

2019-11-06 09:52:01

JavaScript單線程非阻塞

2022-06-07 07:37:40

線程進程開發

2023-09-07 10:26:50

接口測試自動化測試

2022-02-08 12:06:12

云計算

2019-08-07 17:18:18

云計算云原生函數

2011-08-23 11:03:35

ATM

2025-01-16 10:41:40

2012-09-29 09:22:24

.NETGC內存分配

2012-09-29 10:29:56

.Net內存分配繼承
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲国产成人精品女人久久久 | 欧美a级成人淫片免费看 | 欧美极品在线 | 四虎影视免费观看 | 亚洲美女网站 | 日韩一区二区在线播放 | 亚洲精品国产a久久久久久 中文字幕一区二区三区四区五区 | 亚洲成人精品 | 在线观看视频一区二区三区 | 欧美激情精品久久久久久变态 | 九九九视频精品 | 精品国产乱码久久久久久蜜退臀 | 蜜桃视频成人 | 欧美日韩精品亚洲 | 99精品国产一区二区三区 | 男女激情网站免费 | 狠狠综合久久av一区二区小说 | www.xxxx欧美 | 国产精品视频在线免费观看 | 日韩精品一区二区三区在线 | 超碰在线播| 亚洲精品大片 | 亚洲精品久久久久久国产精华液 | 狠狠综合久久av一区二区老牛 | 国产成都精品91一区二区三 | 在线欧美小视频 | 国产综合久久 | 久久久久久99 | 91黄色免费看 | 黄色av网站在线观看 | 福利视频日韩 | 日韩免费视频一区二区 | 一级黄色日本片 | 日韩久久成人 | 日韩欧美成人精品 | 犬夜叉在线观看 | 视频一区二区三区在线观看 | 91人人看| 一级毛片免费看 | 五月天国产 | 91色啪 |