最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時(shí)間:2020年03月04日 12:10:49   作者:葉落森  
這篇文章主要介紹了JS數(shù)據(jù)類型(基本數(shù)據(jù)類型、引用數(shù)據(jù)類型)及堆和棧的區(qū)別,結(jié)合實(shí)例形式分析了JS基本數(shù)據(jù)類型、引用數(shù)據(jù)類型概念、用法,以及堆和棧的區(qū)別,需要的朋友可以參考下

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

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

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

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

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

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

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

基本數(shù)據(jù)類型是按值訪問的,因?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的改變,對a沒有影響。

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

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

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

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

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

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

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

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

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

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

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

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

 

各類型的基礎(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的操作,都會返回NaN   ② NaN不等于自身。

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

isNaN(123) //false
isNaN("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沒有toString()方法)。

3.Boolean類型

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

4.Undefined類型

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

5.Null類型

null類型被看做空對象指針,前文說到null類型也是空的對象引用。

6.Object類型

js中對象是一組屬性與方法的集合。這里就要說到引用類型了,引用類型是一種數(shù)據(jù)結(jié)構(gòu),用于將數(shù)據(jù)和功能組織在一起。引用類型有時(shí)候也被稱為對象定義,因?yàn)樗鼈兠枋龅氖且活悓ο笏哂械膶傩院头椒ā?/p>

感興趣的朋友可以使用在線HTML/CSS/JavaScript代碼運(yùn)行工具http://tools.jb51.net/code/HtmlJsRun測試上述代碼運(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é)

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

相關(guān)文章

  • 圖片動畫橫條廣告帶上下滾動可自定義圖片、鏈接等等

    圖片動畫橫條廣告帶上下滾動可自定義圖片、鏈接等等

    可以自定義廣告的圖片、鏈接、長、寬等。光標(biāo)移到圖片上會出現(xiàn)左右箭頭,感興趣的朋友可以嘗試測試下
    2013-10-10
  • 詳解JavaScript如何有效取消HTTP請求

    詳解JavaScript如何有效取消HTTP請求

    在Web開發(fā)中,取消HTTP請求是一項(xiàng)關(guān)鍵任務(wù),所以本文為大家介紹了如何使用XMLHttpRequest、Fetch和Axios這三種常用的HTTP請求方式來實(shí)現(xiàn)取消請求的功能,需要的可以參考下
    2023-09-09
  • javascript Xml增刪改查(IE下)操作實(shí)現(xiàn)代碼

    javascript Xml增刪改查(IE下)操作實(shí)現(xiàn)代碼

    比較不錯(cuò)的實(shí)現(xiàn)代碼,大家可以仔細(xì)的看下,思路。
    2009-01-01
  • 基于js 本地存儲(詳解)

    基于js 本地存儲(詳解)

    下面小編就為大家?guī)硪黄趈s 本地存儲(詳解)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-08-08
  • Javascript類定義語法,私有成員、受保護(hù)成員、靜態(tài)成員等介紹

    Javascript類定義語法,私有成員、受保護(hù)成員、靜態(tài)成員等介紹

    JS只是一門支持面向?qū)ο缶幊痰恼Z言,通過OO可以讓我們的代碼組織更加人性化。可是與傳統(tǒng)基與類的面向?qū)幊陶Z言不同它沒有類概念并且沒成員訪問修飾符。這多少會給我們編程工作會帶來一些束縛
    2011-12-12
  • TypeScript中的interface與type實(shí)戰(zhàn)

    TypeScript中的interface與type實(shí)戰(zhàn)

    這篇文章主要介紹了TypeScript中的interface與type詳解,它們都是用來定義類型的強(qiáng)大工具,在實(shí)際開發(fā)中,你可以根據(jù)具體情況選擇使用 interface 或 type,或者甚至將它們結(jié)合起來使用,需要的朋友可以參考下
    2023-06-06
  • js中cookie的使用詳細(xì)分析

    js中cookie的使用詳細(xì)分析

    JavaScript中的另一個(gè)機(jī)制:cookie,則可以達(dá)到真正全局變量的要求。 cookie是瀏覽器 提供的一種機(jī)制,它將document 對象的cookie屬性提供給JavaScript。可以由JavaScript對其進(jìn)行控制,而并不是JavaScript本身的性質(zhì)。
    2008-05-05
  • webstorm中vue語法的支持詳解

    webstorm中vue語法的支持詳解

    這篇文章主要介紹了webstorm中vue語法的支持詳解,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-05-05
  • JavaScript中的toString()和toLocaleString()方法的區(qū)別

    JavaScript中的toString()和toLocaleString()方法的區(qū)別

    本文給大家介紹JavaScript中的toString()和toLocaleString()方法的區(qū)別,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2017-02-02
  • js將日期格式轉(zhuǎn)換為YYYY-MM-DD HH:MM:SS

    js將日期格式轉(zhuǎn)換為YYYY-MM-DD HH:MM:SS

    這篇文章主要介紹了js將日期格式轉(zhuǎn)換為YYYY-MM-DD HH:MM:SS,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09

最新評論

克东县| 淄博市| 威海市| 沅江市| 洛宁县| 建昌县| 监利县| 惠州市| 察雅县| 松原市| 邵阳县| 黔南| 体育| 龙游县| 微山县| 古田县| 青岛市| 扎鲁特旗| 鄱阳县| 枣阳市| 卫辉市| 永清县| 宾川县| 册亨县| 宿松县| 辽阳市| 城市| 乌拉特后旗| 图片| 岳池县| 集安市| 云阳县| 新闻| 永康市| 休宁县| 大埔县| 蒲城县| 浦江县| 潍坊市| 湄潭县| 瓮安县|