av一区二区在线观看_亚洲男人的天堂网站_日韩亚洲视频_在线成人免费_欧美日韩精品免费观看视频_久草视

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

JS數(shù)據(jù)類型(基本數(shù)據(jù)類型、引用數(shù)據(jù)類型)及堆和棧的區(qū)別分析

瀏覽:161日期:2024-05-21 15:56:53

本文實(shí)例講述了JS數(shù)據(jù)類型(基本數(shù)據(jù)類型、引用數(shù)據(jù)類型)及堆和棧的區(qū)別。分享給大家供大家參考,具體如下:

js數(shù)據(jù)類型:基本數(shù)據(jù)類型和引用數(shù)據(jù)類型(文章最下面會(huì)介紹各類型的基礎(chǔ)以及注意事項(xiàng)

基本數(shù)據(jù)類型指的是簡(jiǎn)單的數(shù)據(jù)段,引用數(shù)據(jù)類型指的是有多個(gè)值構(gòu)成的對(duì)象

當(dāng)我們把變量賦值給一個(gè)變量時(shí),解析器首先要確認(rèn)的就是這個(gè)值是基本類型值還是引用類型值

基本數(shù)據(jù)類型:數(shù)字(Number)、字符串(String)、布爾(Boolean)、空(Null)、未定義(Undefined)

引用數(shù)據(jù)類型:也就是對(duì)象類型Object type,比如:Object 、Array 、Function 、Data等

基本數(shù)據(jù)類型

基本數(shù)據(jù)類型是按值訪問(wèn)的,因?yàn)榭梢灾苯硬僮鞅4嬖谧兞恐械膶?shí)際值

var a = 1;var b = a;//b獲取的是a值得一份拷貝,雖然,兩個(gè)變量的值相等,但是兩個(gè)變量保存了兩個(gè)不同的基本數(shù)據(jù)類型值b = 2;console.log(a); // 1

b只是保存了a復(fù)制的一個(gè)副本。所以,b的改變,對(duì)a沒(méi)有影響。

下圖演示了這種基本數(shù)據(jù)類型賦值的過(guò)程:

JS數(shù)據(jù)類型(基本數(shù)據(jù)類型、引用數(shù)據(jù)類型)及堆和棧的區(qū)別分析

棧(stack):棧會(huì)自動(dòng)分配內(nèi)存空間,會(huì)自動(dòng)釋放,存放基本類型,簡(jiǎn)單的數(shù)據(jù)段,占據(jù)固定大小的空間。

所有在方法中定義的變量都是放在棧內(nèi)存中,隨著方法的執(zhí)行結(jié)束,這個(gè)方法的內(nèi)存棧也自然銷毀

優(yōu)點(diǎn):存取速度比堆快,僅次于直接位于CPU中的寄存器,數(shù)據(jù)可以共享; 缺點(diǎn):存在棧中的數(shù)據(jù)大小與生存期必須是確定的,缺乏靈活性。

棧:可以遞歸調(diào)用方法,這樣隨著棧深度的增加,JVM維持著一條長(zhǎng)長(zhǎng)的方法調(diào)用軌跡,知道內(nèi)存不夠分配,產(chǎn)生棧溢出。

引用類型數(shù)據(jù)

javascript的引用數(shù)據(jù)類型是保存在堆內(nèi)存中的對(duì)象。

與其他語(yǔ)言的不同是,你不可以直接訪問(wèn)堆內(nèi)存空間中的位置和操作堆內(nèi)存空間。只能操作對(duì)象在棧內(nèi)存中的引用地址。

所以,引用類型數(shù)據(jù)在棧內(nèi)存中保存的實(shí)際上是對(duì)象在堆內(nèi)存中的引用地址。通過(guò)這個(gè)引用地址可以快速查找到保存中堆內(nèi)存中的對(duì)象。

var obj1 = new Object();var obj2 = obj1;obj2.name = '葉落森';console.log(obj1.name); //葉落森

說(shuō)明這兩個(gè)引用數(shù)據(jù)類型指向了同一個(gè)堆內(nèi)存對(duì)象。obj1賦值給onj2,實(shí)際上這個(gè)堆內(nèi)存對(duì)象在棧內(nèi)存的引用地址復(fù)制了一份給了obj2,但是實(shí)際上他們共同指向了同一個(gè)堆內(nèi)存對(duì)象。實(shí)際上改變的是堆內(nèi)存對(duì)象。(這里就會(huì)引出深拷貝和淺拷貝問(wèn)題,這里是淺拷貝,具體的見(jiàn)前面一篇堆和棧的區(qū)別)

下面我們來(lái)演示這個(gè)引用數(shù)據(jù)類型賦值過(guò)程:

JS數(shù)據(jù)類型(基本數(shù)據(jù)類型、引用數(shù)據(jù)類型)及堆和棧的區(qū)別分析

各類型的基礎(chǔ)以及注意事項(xiàng)

1.Number類型

Number類型包含整數(shù)和浮點(diǎn)數(shù)(浮點(diǎn)數(shù)數(shù)值必須包含一個(gè)小數(shù)點(diǎn),且小數(shù)點(diǎn)后面至少有一位數(shù)字)兩種值。

NaN:非數(shù)字類型。特點(diǎn):① 涉及到的 任何關(guān)于NaN的操作,都會(huì)返回NaN ② NaN不等于自身。

isNaN() 函數(shù)用于檢查其參數(shù)是否是非數(shù)字值。

isNaN(123) //falseisNaN('hello') //true

2.String類型

字符串有l(wèi)ength屬性。

字符串轉(zhuǎn)換:轉(zhuǎn)型函數(shù)String(),適用于任何數(shù)據(jù)類型(null,undefined 轉(zhuǎn)換后為null和undefined);toString()方法(null,defined沒(méi)有toString()方法)。

3.Boolean類型

該類型只有兩個(gè)值,true和false

4.Undefined類型

只有一個(gè)值,即undefined值。使用var聲明了變量,但未給變量初始化值,那么這個(gè)變量的值就是undefined。

5.Null類型

null類型被看做空對(duì)象指針,前文說(shuō)到null類型也是空的對(duì)象引用。

6.Object類型

js中對(duì)象是一組屬性與方法的集合。這里就要說(shuō)到引用類型了,引用類型是一種數(shù)據(jù)結(jié)構(gòu),用于將數(shù)據(jù)和功能組織在一起。引用類型有時(shí)候也被稱為對(duì)象定義,因?yàn)樗鼈兠枋龅氖且活悓?duì)象所具有的屬性和方法。

感興趣的朋友可以使用在線HTML/CSS/JavaScript代碼運(yùn)行工具:http://tools.jb51.net/code/HtmlJsRun測(cè)試上述代碼運(yùn)行效果。

更多關(guān)于JavaScript相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《JavaScript數(shù)學(xué)運(yùn)算用法總結(jié)》、《JavaScript數(shù)據(jù)結(jié)構(gòu)與算法技巧總結(jié)》、《JavaScript數(shù)組操作技巧總結(jié)》、《JavaScript排序算法總結(jié)》、《JavaScript遍歷算法與技巧總結(jié)》、《JavaScript查找算法技巧總結(jié)》及《JavaScript錯(cuò)誤與調(diào)試技巧總結(jié)》

希望本文所述對(duì)大家JavaScript程序設(shè)計(jì)有所幫助。

標(biāo)簽: JavaScript
相關(guān)文章:
主站蜘蛛池模板: 成人在线网| 日本三级韩国三级美三级91 | 中文字幕免费观看视频 | 精品视频在线免费观看 | 精品国产一区二区在线观看 | 69人人 | 日韩精品久久久久久久酒店 | 日韩一区二区三区在线 | 成人毛片网站 | a在线观看 | 国产传媒在线播放 | 中文久久久 | 亚洲欧美综合另类 | 国产一区在线看 | 欧美日韩三级 | 色网站女女 | 91亚色视频 | 免费一区二区视频 | 黄色成人在线观看 | 在线播放日韩 | 中文字幕精品视频 | 激情影院在线观看 | 黄色精品视频 | www.青青草 | 午夜性影院 | 欧美日韩视频在线 | 综合久久综合 | 中文字幕欧美激情 | 欧美激情成人 | 精品成人在线 | 久久伊人av | 日韩午夜在线 | 国产精品成人国产乱一区 | 欧美在线视频一区二区 | 美女91网站| 欧美日韩成人一区二区三区 | 明日边缘 | 日韩福利片 | 黄色小视频在线观看 | 国产网址| 日本黄色免费网站 |