欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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ù)類型(文章最下面會(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ù)類型是按值訪問的,因?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沒有影響。

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

棧(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ì)象。

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

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

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

說明這兩個(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ì)引出深拷貝和淺拷貝問題,這里是淺拷貝,具體的見前面一篇堆和棧的區(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的操作,都會(huì)返回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類型被看做空對(duì)象指針,前文說到null類型也是空的對(duì)象引用。

6.Object類型

js中對(duì)象是一組屬性與方法的集合。這里就要說到引用類型了,引用類型是一種數(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ì)有所幫助。

相關(guān)文章

  • JavaScript之AOP編程實(shí)例

    JavaScript之AOP編程實(shí)例

    這篇文章主要介紹了JavaScript的AOP編程,以實(shí)例形式分析了javascript面向切面編程的實(shí)現(xiàn)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-07-07
  • JS只能輸入正整數(shù)的簡(jiǎn)單實(shí)例

    JS只能輸入正整數(shù)的簡(jiǎn)單實(shí)例

    下面小編就為大家?guī)硪黄狫S只能輸入正整數(shù)的簡(jiǎn)單實(shí)例。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2016-10-10
  • 微信JSAPI Ticket接口簽名詳解

    微信JSAPI Ticket接口簽名詳解

    這篇文章主要為大家詳細(xì)介紹了微信JSAPI Ticket接口簽名,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-07-07
  • 微信小程序?qū)崿F(xiàn)傳參數(shù)的幾種方法示例

    微信小程序?qū)崿F(xiàn)傳參數(shù)的幾種方法示例

    這篇文章主要給大家介紹了關(guān)于微信小程序?qū)崿F(xiàn)傳參數(shù)的幾種方法,分別是navigator跳轉(zhuǎn)時(shí)、全局變量、列表index下標(biāo)取值以及form表單傳值的相關(guān)內(nèi)容,需要的朋友可以參考借鑒,下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2018-01-01
  • ts中的void和never類型及區(qū)別

    ts中的void和never類型及區(qū)別

    void類型和never類型都是ts新增的類型,這兩者的共同點(diǎn)是都常見用于聲明函數(shù)的返回值的類型,這里我們把它們兩放在一起介紹有助于大家區(qū)分,這篇文章主要介紹了ts中的void和never類型及區(qū)別,需要的朋友可以參考下
    2023-05-05
  • 使用p5.js臨摹動(dòng)態(tài)圖形

    使用p5.js臨摹動(dòng)態(tài)圖形

    這篇文章主要為大家詳細(xì)介紹了如何使用p5.js臨摹動(dòng)態(tài)圖形,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-10-10
  • mpvue 頁面預(yù)加載新增preLoad生命周期的兩種方式

    mpvue 頁面預(yù)加載新增preLoad生命周期的兩種方式

    這篇文章主要介紹了mpvue 頁面預(yù)加載新增preLoad生命周期的兩種方式,本文重點(diǎn)給大家講解了第一種方式,需要的朋友可以參考下
    2019-10-10
  • JS 拼湊字符串的簡(jiǎn)單實(shí)例

    JS 拼湊字符串的簡(jiǎn)單實(shí)例

    下面小編就為大家?guī)硪黄狫S 拼湊字符串的簡(jiǎn)單實(shí)例。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2016-09-09
  • 你必須知道的Javascript知識(shí)點(diǎn)之"單線程事件驅(qū)動(dòng)"的使用

    你必須知道的Javascript知識(shí)點(diǎn)之"單線程事件驅(qū)動(dòng)"的使用

    本篇文章小編為大家介紹,你必須知道的Javascript知識(shí)點(diǎn)之"單線程事件驅(qū)動(dòng)"的使用。需要的朋友參考下
    2013-04-04
  • 原生js實(shí)現(xiàn)彈幕效果

    原生js實(shí)現(xiàn)彈幕效果

    這篇文章主要為大家詳細(xì)介紹了原生js實(shí)現(xiàn)彈幕效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-11-11

最新評(píng)論