成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

JS中,基本數(shù)據(jù)類型、引用類型與基本包裝類型

Tychio / 3025人閱讀

摘要:例子中,屬于基本類型對象?;緮?shù)據(jù)類型和引用類型作方法入?yún)r的差異通常,在函數(shù)調(diào)用時,如果入?yún)榛緮?shù)據(jù)類型時,函數(shù)的參數(shù)將以值傳遞的方式傳遞。

前言:再次翻閱JS高程(第3版)過程中,看到了“基本包裝類型”,趁熱留下此文,對JS的數(shù)據(jù)類型做個較為深入的小結(jié)(2018-10-19)。

雖然JS與其他強(qiáng)類型語言不一樣,聲明中無需預(yù)設(shè)數(shù)據(jù)類型,但是JS也是有數(shù)據(jù)類型區(qū)分的。

基本數(shù)據(jù)類型(存儲值):Undefined、Null、Boolean、Number、String

引用類型(存儲地址指針):對象

基本包裝類型(臨時性質(zhì)的引用類型):alert("hello world!".split(" ").length); //2

基本數(shù)據(jù)類型
基本數(shù)據(jù)類型通常通過字面量進(jìn)行賦值,基本數(shù)據(jù)類型變量存儲的是具體的值:

var strA = "stringA";
var strB = strA;
alert(strB); //stringA
strB = "stringB";
alert(strB); //stringB

將strA的賦值給strB,實(shí)際上只是將strA的值("stringA")賦值給變量strB。賦值完成,strA和strB并無任何關(guān)聯(lián)關(guān)系,此時修改strB的值,strA不會有任何的影響。

引用類型
引用類型存儲的值為地址指針。解釋器會在內(nèi)存堆中創(chuàng)建一個實(shí)際的對象,然后將該對象的地址賦值給變量。引用變量之間的賦值,實(shí)際上是指針賦值:

 var jsonA = {"val":"stringA"};
 var jsonB =  jsonA;
 alert(jsonB.val); // stringA
 jsonB.val = "stringB";
 alert(jsonA.val); // stringB

對象jsonA創(chuàng)建后,它保存的并不是具體的json對象,而是指向這個對象地址的指針。此時,將jsonA的值賦值給jsonB,只是將其保存的地址指針賦值給jsonB。賦值完成后,jsonA和jsonB同時指向內(nèi)存中的同一個對象。當(dāng)通過jsonB進(jìn)行操作該對象,A也會跟著“改變”。

基本包裝類型
基本數(shù)據(jù)類型只是一個簡單的,存儲值的變量,它不是對象,它并沒有任何的方法。但是我們卻可以把它當(dāng)成對象一樣使用:

var strA = "Hello-World!";
alert(strA.split("-").length); //2
alert(typeof strA); //string
strA.color = "yellow";
alert(strA.color); //undefined

var strB = new String("Hello-World!");
alert(strB.split("-").length); //2
alert(typeof strB); //object
strB.color = "red";
alert(strB.color); //red
var strC = strB;
strC.color = "blue";
alert(strB.color); //red

原因在于,當(dāng)我們調(diào)用“基本數(shù)據(jù)類型”變量的方法時,后臺為我們將變量包裝成對應(yīng)類型的臨時對象,然后完成我們的調(diào)用方法并返回,然后銷毀這個臨時對象。例子中,strA屬于基本類型對象。我們用typeof檢測時返回了“string”。我們卻可以直接調(diào)用該變量的split和length方法。我們將次變量當(dāng)作對象一樣,對屬性“color”進(jìn)行賦值,此時并不會報錯。但是當(dāng)我們?nèi)ナ褂眠@個屬性時,卻提示了“ undefined”,這是是因?yàn)閟trA并沒有這個屬性。

【基本數(shù)據(jù)類型】和【引用類型】作方法入?yún)r的差異
通常,在函數(shù)調(diào)用時,如果入?yún)椤净緮?shù)據(jù)類型】時,函數(shù)的參數(shù)將以“值傳遞”的方式傳遞。此時修改函數(shù)內(nèi)接收該值的局部變量,并不會對函數(shù)外的變量產(chǎn)生影響:

var strA = "out Function!";
changeStrVal(strA);
alert(strA); //out Function!

function changeStrVal(paraStr){
    var strB = paraStr;
    strB = "in Function!";
}

但是,如果入?yún)楠?dú)享,即【引用類型】,則函數(shù)內(nèi)的局部變量和函數(shù)外的變量均指向同一塊內(nèi)存地址。測試修改函數(shù)局部變量的屬性,函數(shù)外變量屬性也會隨之而變:

var objA = {"val":"out Function!"};
changeObjVal(objA);
alert(objA.val); //in Function!

function changeObjVal(paraObj){
   var objB = paraObj;
   objB.val = "in Function!";         
}

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://m.hztianpu.com/yun/98511.html

相關(guān)文章

  • js基本類型、引用類型、包裝類型

    摘要:每當(dāng)讀取這個基本類型時,后臺會創(chuàng)建一個對應(yīng)的基本包裝類型的對象。類型判斷主要是用來判斷基本數(shù)據(jù)類型返回類型新增所以只能用來判斷基本數(shù)據(jù)類型。引用類型基本包裝類型都會返回。 最近重溫JS高程設(shè)計以及與朋友的討論。決定趁熱打鐵記錄JS的各種類型,并做下深入總結(jié)。 js的幾種類型 基本類型:Boolean、String、Number、Null、Undefined 引用類型: 2.1 O...

    liangzai_cool 評論0 收藏0
  • js 數(shù)據(jù)類型

    摘要:來自你不知道的對未初始化和未聲明的變量執(zhí)行操作符都返回了值類型是第二個只有一個值的數(shù)據(jù)類型,這個特殊的值是。 基本類型 主要有:undefined、null、布爾值(Boolean)、字符串(String)、數(shù)值(Number)、Symbol undefined 在使用 var,let,const 聲明變量但未對其加以初始化時,這個變量的值就是undefined 注意點(diǎn): ...

    Jensen 評論0 收藏0
  • 你還認(rèn)為JS萬物皆對象?

    摘要:這也解答了我曾經(jīng)的一個疑問同樣的道理,在調(diào)用屬性的瞬間,也是使用先來實(shí)例化一個對象,所以那一瞬間他們的構(gòu)造函數(shù)以及原型對象是相同的,但也僅僅是那一瞬間。 經(jīng)常在國內(nèi)的各大網(wǎng)站博客上看到一句話,叫做JS中萬物皆對象,那是否真是如此? 那么,我們先來捋一捋JS中的數(shù)據(jù)類型,JS中的數(shù)據(jù)類型有下面幾種 Undefined Null Boolean Number String Symbol ...

    levinit 評論0 收藏0
  • 基本數(shù)據(jù)類型引用類型的區(qū)別詳解

    摘要:前兩天看到大神的關(guān)于基本數(shù)據(jù)類型和引用類型的區(qū)別的文章覺得寫得非常不錯,就想著在其基礎(chǔ)上加上自己平時看到的一些知識點(diǎn)和理解,所以就有了以下的文章基本數(shù)據(jù)類型基本數(shù)據(jù)類型包括基本數(shù)據(jù)類型是按值訪問的,就是說我們可以操作保存在變量中的實(shí)際的值基 前兩天看到kraaas大神的關(guān)于基本數(shù)據(jù)類型和引用類型的區(qū)別的文章覺得寫得非常不錯,就想著在其基礎(chǔ)上加上自己平時看到的一些知識點(diǎn)和理解,所以就有了...

    CoffeX 評論0 收藏0
  • JS數(shù)據(jù)類型、內(nèi)置對象、包裝類型對象、typeof關(guān)系

    摘要:平時在復(fù)習(xí)基礎(chǔ)知識時,經(jīng)常會遇到數(shù)據(jù)類型基礎(chǔ)數(shù)據(jù)類型內(nèi)置對象包裝類型對象,檢測數(shù)據(jù)類型時,用到的值,感覺都差不多,但是又有差異。值與數(shù)據(jù)類型關(guān)系對比下圖,即可知值相較于基礎(chǔ)數(shù)據(jù)類型少多 平時在復(fù)習(xí)JS基礎(chǔ)知識時,經(jīng)常會遇到JS數(shù)據(jù)類型、基礎(chǔ)數(shù)據(jù)類型、內(nèi)置對象、包裝類型對象,檢測數(shù)據(jù)類型時,用到的typeof值,感覺都差不多,但是又有差異。今天特地整理下,方便理解。 JS數(shù)據(jù)類型 基礎(chǔ)數(shù)...

    OldPanda 評論0 收藏0

發(fā)表評論

0條評論

閱讀需要支付1元查看
<