国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

前端 js 棧內(nèi)存和堆內(nèi)存 基本數(shù)據(jù)類型和復(fù)雜數(shù)據(jù)類型的區(qū)別?

這篇具有很好參考價(jià)值的文章主要介紹了前端 js 棧內(nèi)存和堆內(nèi)存 基本數(shù)據(jù)類型和復(fù)雜數(shù)據(jù)類型的區(qū)別?。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

前端 js 棧內(nèi)存和堆內(nèi)存 基本數(shù)據(jù)類型和復(fù)雜數(shù)據(jù)類型的區(qū)別?

先了解一下JavaScript 數(shù)據(jù)類型有哪些?

javaScript 中有8種基本的數(shù)據(jù)類型:7種為基本數(shù)據(jù)類型,而Object 為復(fù)雜數(shù)據(jù)類型

基本數(shù)據(jù)類型(原始數(shù)據(jù)類型):

  • number 用于任何類型的數(shù)字
  • bigint 用于任意長(zhǎng)度的整數(shù)。
  • string 用于字符串
  • boolean :布爾值 用于 true 和 false。
  • null 用于未知的值
  • undefined 用于未定義的值 —— 只有一個(gè) undefined 值的獨(dú)立類型。
  • symbol 用于唯一的標(biāo)識(shí)符。

復(fù)雜數(shù)據(jù)類型(非原始數(shù)據(jù)類型):
億點(diǎn)小知識(shí): Object 是復(fù)雜數(shù)據(jù)類型的統(tǒng)稱,以下類型都是屬于Object 類型:

  • Function(函數(shù))
  • Array(數(shù)組)
  • Date(日期)
  • RegExp(正則表達(dá)式)
接下來(lái)我們來(lái)看一下 棧內(nèi)存和堆內(nèi)存

當(dāng)定義一個(gè)變量的時(shí)候,JavaScript 引擎會(huì)為變量分配兩種內(nèi)存:棧內(nèi)存和堆內(nèi)存。
棧內(nèi)存和堆內(nèi)存分別對(duì)應(yīng)基本數(shù)據(jù)類型和復(fù)雜數(shù)據(jù)類型

  • 棧內(nèi)存:

基本數(shù)據(jù)類型: number、bigint 、string 、boo lean 、null 、undefined 、symbol
對(duì)于基本數(shù)據(jù)類型有固定的大小。JavaScript 引擎為它們分配一片固定的內(nèi)存,并存儲(chǔ)在上:

let name = "小張";
let age = 18;

因?yàn)?name 和 age 都是基本數(shù)據(jù)類型,JavaScript 引擎將它們存儲(chǔ)在棧上,如下圖所示:
前端 js 棧內(nèi)存和堆內(nèi)存 基本數(shù)據(jù)類型和復(fù)雜數(shù)據(jù)類型的區(qū)別?
JavaScript 將對(duì)象復(fù)雜數(shù)據(jù)類型(Object) 存儲(chǔ)在堆上

let obj = {
    name: "小張",
    age: 18
};
let arr = [1,2,3]

對(duì)于復(fù)雜數(shù)據(jù)類型 會(huì)把變量名(對(duì)象名)作為堆內(nèi)存的地址指向 堆內(nèi)存 如下圖所示:
前端 js 棧內(nèi)存和堆內(nèi)存 基本數(shù)據(jù)類型和復(fù)雜數(shù)據(jù)類型的區(qū)別?

關(guān)于棧(Stack)

“棧”具有線程和“先進(jìn)后出”的特點(diǎn),也就是每個(gè)棧楨一般會(huì)保存下一個(gè)棧楨的地址,指向next節(jié)點(diǎn)(即指向下一個(gè)棧楨),類似隊(duì)列的鏈?zhǔn)浇Y(jié)構(gòu)。同時(shí)先入棧的會(huì)先執(zhí)行,后入棧的會(huì)先彈出(執(zhí)行完銷毀)。
我們常說(shuō)的棧內(nèi)存一般指的是內(nèi)存的空間棧。

那么棧內(nèi)存有哪些特點(diǎn)

數(shù)據(jù)一執(zhí)行完畢,變量會(huì)立即釋放,節(jié)約內(nèi)存空間。

  • 優(yōu)勢(shì):存取速度比堆要快,僅次于直接位于CPU中的寄存器。
  • 缺點(diǎn):存在棧中的數(shù)據(jù)大小與生存期必須是確定的,缺乏靈活性。
    億點(diǎn)小知識(shí):棧內(nèi)存的數(shù)據(jù)會(huì)進(jìn)行共享
let a = 2
let b = 2

運(yùn)行過(guò)程是 它會(huì)在棧中創(chuàng)建一個(gè)變量為a的引用 然后查找棧內(nèi)是否有2這個(gè)數(shù)據(jù),如果沒(méi)有就創(chuàng)建一個(gè)2數(shù)據(jù)進(jìn)行賦值,當(dāng)b進(jìn)行查找的時(shí)候會(huì)找到2這個(gè)數(shù)據(jù)直接會(huì)指向2這個(gè)數(shù)據(jù),但當(dāng)a=3的時(shí)候 同樣會(huì)去查找有沒(méi)有3數(shù)據(jù),沒(méi)有會(huì)進(jìn)行創(chuàng)建3,但不會(huì)影響b=2 這個(gè)值

關(guān)于堆(Heap)

是內(nèi)存中最大的一塊內(nèi)存區(qū)域,也是被各個(gè)線程共享的內(nèi)存區(qū)域,所有的對(duì)象實(shí)例(或復(fù)雜類型信息)都保存在堆內(nèi)存中。

堆內(nèi)存特點(diǎn)

堆內(nèi)存中所有的實(shí)體都有內(nèi)存地址值,內(nèi)存釋放靠垃圾回收機(jī)制不定時(shí)的收取。

  • 堆的優(yōu)勢(shì):可以動(dòng)態(tài)地分配內(nèi)存大小。
  • 缺點(diǎn):由于要在運(yùn)行時(shí)動(dòng)態(tài)分配內(nèi)存,存取速度較慢。(這個(gè)一般是體會(huì)不到的,只是相對(duì)于棧內(nèi)存而言)
了解一些相關(guān)的知識(shí)
  • 變量
    變量名是棧內(nèi)存指針的別名。因?yàn)榭梢韵嚷暶髯兞?,后賦值。
    聲明變量是在指針頁(yè)表里建立變量信息。而賦值才是真正的開辟內(nèi)存空間。但是為了節(jié)省內(nèi)存
    所以變量名與值數(shù)據(jù)是分開存放的。
    就因?yàn)樽兞颗c值是分開兩個(gè)地方保存,所以才有“棧內(nèi)存數(shù)據(jù)共享”這個(gè)特性。從而會(huì)有不同的變量名指向同一個(gè)內(nèi)存,和相同變量名指向不同的內(nèi)存等情況。
    而保存變量名的內(nèi)存地址稱為指針變量。

  • 內(nèi)存溢出
    內(nèi)存溢出是指程序在申請(qǐng)內(nèi)存時(shí),沒(méi)有足夠的內(nèi)存空間供其使用,出現(xiàn)out of memory。

  • 內(nèi)存泄露
    內(nèi)存泄露是指程序在申請(qǐng)內(nèi)存后,無(wú)法釋放已申請(qǐng)的內(nèi)存空間,一次內(nèi)存泄露危害可以忽略,但內(nèi)存泄露堆積后果很嚴(yán)重,無(wú)論多少內(nèi)存,遲早會(huì)被占光。
    我們?cè)陂_發(fā)中有時(shí)候會(huì)遇到瀏覽器崩潰無(wú)響應(yīng)可能就是因?yàn)閮?nèi)存堆積的后果。

前端 js 棧內(nèi)存和堆內(nèi)存 基本數(shù)據(jù)類型和復(fù)雜數(shù)據(jù)類型的區(qū)別?
以上就是js的棧內(nèi)存和堆內(nèi)存感謝大家的閱讀
如碰到其他的問(wèn)題 可以私下我 一起探討學(xué)習(xí)
如果對(duì)你有所幫助還請(qǐng) 點(diǎn)贊 收藏謝謝~!
關(guān)注收藏博客 作者會(huì)持續(xù)更新…文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-503375.html

到了這里,關(guān)于前端 js 棧內(nèi)存和堆內(nèi)存 基本數(shù)據(jù)類型和復(fù)雜數(shù)據(jù)類型的區(qū)別?的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • c++的棧內(nèi)存和堆內(nèi)存

    在C++中,內(nèi)存主要分為兩種類型:棧內(nèi)存和堆內(nèi)存。當(dāng)我們?cè)诤瘮?shù)內(nèi)部聲明一個(gè)變量時(shí),它通常是在棧上創(chuàng)建的。棧上的內(nèi)存是由編譯器自動(dòng)管理的,也就是說(shuō),當(dāng)變量的生命周期結(jié)束(例如,當(dāng)函數(shù)返回時(shí))時(shí),編譯器會(huì)自動(dòng)釋放它占用的內(nèi)存。然而,棧的大小是有限的,

    2024年02月08日
    瀏覽(14)
  • JVM——棧和堆概述,以及有什么區(qū)別?

    JVM——棧和堆概述,以及有什么區(qū)別?

    方法棧并不是某一個(gè) JVM 的內(nèi)存空間,而是我們描述方法被調(diào)用過(guò)程的一個(gè)邏輯概念。 在同一個(gè)線程內(nèi),T1()調(diào)用T2(): T1()先開始,T2()后開始; T2()先結(jié)束,T1()后結(jié)束。 從英文單詞角度來(lái)說(shuō) 棧:stack 堆:heap 從數(shù)據(jù)結(jié)構(gòu)角度來(lái)說(shuō) 棧和堆一樣:都是先進(jìn)后出,后進(jìn)先出的數(shù)據(jù)結(jié)

    2024年02月12日
    瀏覽(21)
  • 筆記本電腦內(nèi)存條的類型有哪些?它們之間有什么區(qū)別?

    筆記本電腦內(nèi)存條有幾種常見的類型,包括: DDR4(Double Data Rate 4):DDR4 是目前最新的內(nèi)存標(biāo)準(zhǔn),它提供了更高的帶寬和更低的電壓。DDR4 內(nèi)存條速度更快,能夠處理更多數(shù)據(jù),并且相對(duì)于舊的 DDR3 內(nèi)存而言更節(jié)能。 DDR3(Double Data Rate 3):DDR3 內(nèi)存條是較舊的內(nèi)存標(biāo)準(zhǔn),但仍

    2024年02月07日
    瀏覽(87)
  • 【python基礎(chǔ)】復(fù)雜數(shù)據(jù)類型-列表類型(元組)

    【python基礎(chǔ)】復(fù)雜數(shù)據(jù)類型-列表類型(元組)

    列表非常適合用于存儲(chǔ)在程序運(yùn)行期間可能變化的數(shù)據(jù)集。列表是可以修改的。 然而,有時(shí)候需要?jiǎng)?chuàng)建一系列不可修改的元素,元組可以滿足這種需求 python將不能修改的值稱為不可變的,而不可變的列表被稱為元組。 元組看起來(lái)猶如列表,但使用圓括號(hào)而不是方括號(hào)來(lái)標(biāo)識(shí)

    2024年02月07日
    瀏覽(34)
  • JS基本原理:對(duì)象類型賦值和原生類型賦值

    在本文中,我試圖以最簡(jiǎn)潔的方式來(lái)闡明JavaScript編程原理中對(duì)象類型賦值和原生類型賦值之間的區(qū)別,以及它們各自是如何工作的。這也是我希望在我的JavaScript編程生涯早期就已經(jīng)理解的東西。 首先,讓我們回顧一下JavaScript中不同的原生類型和對(duì)象類型。 原生類型 :Boo

    2024年02月08日
    瀏覽(22)
  • 【python基礎(chǔ)】復(fù)雜數(shù)據(jù)類型-列表類型(列表切片)

    【python基礎(chǔ)】復(fù)雜數(shù)據(jù)類型-列表類型(列表切片)

    視頻講解 前面學(xué)習(xí)的是如何處理列表的 所有數(shù)據(jù)元素 。Python還可以處理列表的部分元素,Python稱之為切片。 創(chuàng)建切片,可指定要使用的第一個(gè)數(shù)據(jù)元素的索引和最后一個(gè)數(shù)據(jù)元素的索引。與range函數(shù)一樣,Python在到達(dá)指定的第二個(gè)索引 前面的 數(shù)據(jù)元素后停止。比如要切片

    2024年02月07日
    瀏覽(22)
  • 【python基礎(chǔ)】復(fù)雜數(shù)據(jù)類型-列表類型(數(shù)值列表)

    【python基礎(chǔ)】復(fù)雜數(shù)據(jù)類型-列表類型(數(shù)值列表)

    視頻講解 列表非常適合用于存儲(chǔ)數(shù)字集合,而Python提供了很多工具,可幫助我們高速地處理數(shù)字列表。 Python的range函數(shù)能夠輕松的生成連續(xù)一系列數(shù)字。 其語(yǔ)法格式:range(起始值,終止值) 我們通過(guò)之前學(xué)習(xí)的for循環(huán)輸出range函數(shù)生成的連續(xù)數(shù)字,編寫程序如下所示: 我們通

    2024年02月07日
    瀏覽(28)
  • 【python基礎(chǔ)】復(fù)雜數(shù)據(jù)類型-列表類型(增刪改查)

    【python基礎(chǔ)】復(fù)雜數(shù)據(jù)類型-列表類型(增刪改查)

    視頻講解 列表數(shù)據(jù)類型-增刪改查 列表是由一系列數(shù)據(jù)元素按特定順序排列組成的 ??梢詫?任何類型數(shù)據(jù)元素 加入列表中,其中的數(shù)據(jù)元素之間沒(méi)有任何關(guān)系。鑒于列表通常包含多個(gè)數(shù)據(jù)元素,給列表變量指定一個(gè)表示復(fù)數(shù)的名稱是個(gè)不錯(cuò)的選擇。 在Python中, 用方括號(hào)[

    2024年02月07日
    瀏覽(29)
  • 【python基礎(chǔ)】復(fù)雜數(shù)據(jù)類型-列表類型(排序/長(zhǎng)度/遍歷)

    【python基礎(chǔ)】復(fù)雜數(shù)據(jù)類型-列表類型(排序/長(zhǎng)度/遍歷)

    在創(chuàng)建的列表中,數(shù)據(jù)元素的排列順序常常是無(wú)法預(yù)測(cè)的。這雖然在大多數(shù)情況下都是不可避免的,但經(jīng)常需要以特定的順序呈現(xiàn)信息。有時(shí)候希望保留列表數(shù)據(jù)元素最初的排列順序,而有時(shí)候又需要調(diào)整排列順序。python提供了很多列表數(shù)據(jù)元素排序的方式,可根據(jù)情況選用

    2024年02月07日
    瀏覽(21)
  • Advanced .Net Debugging 4:基本調(diào)試任務(wù)(對(duì)象檢查:內(nèi)存、值類型、引用類型、數(shù)組和異常的轉(zhuǎn)儲(chǔ))

    Advanced .Net Debugging 4:基本調(diào)試任務(wù)(對(duì)象檢查:內(nèi)存、值類型、引用類型、數(shù)組和異常的轉(zhuǎn)儲(chǔ))

    一、介紹 這是我的《 Advanced .Net Debugging 》這個(gè)系列的第四篇文章。今天這篇文章的標(biāo)題雖然叫做“基本調(diào)試任務(wù)”,但是這章的內(nèi)容還是挺多的。由于內(nèi)容太多,故原書的第三章內(nèi)容我分兩篇文章來(lái)寫。上一篇我們了解了一些調(diào)試技巧,比如:?jiǎn)尾秸{(diào)試、下斷點(diǎn)、過(guò)程調(diào)試

    2024年03月09日
    瀏覽(22)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包