国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Javascript中的基礎(chǔ)類型與引用類型

loonggg / 432人閱讀

摘要:兩種類型基本類型值引用類型值基本類型值指的是保存在棧內(nèi)存中的簡單數(shù)據(jù)段引用類型值指的是那些保存在堆內(nèi)存中的對象,意思是,變量中保存的實(shí)際上只是一個(gè)指針,這個(gè)指針執(zhí)行內(nèi)存中的另一個(gè)位置,由該位置保存對象兩種訪問方式基本類型值按值訪問,操作的是

兩種類型:基本類型值、引用類型值

基本類型值:指的是保存在棧內(nèi)存中的簡單數(shù)據(jù)段;
引用類型值:指的是那些保存在堆內(nèi)存中的對象,意思是,變量中保存的實(shí)際上只是一個(gè)指針,這個(gè)指針執(zhí)行內(nèi)存中的另一個(gè)位置,由該位置保存對象;

兩種訪問方式:

基本類型值:按值訪問,操作的是他們實(shí)際保存的值;
引用類型值:按引用訪問,當(dāng)查詢時(shí),我們需要先從棧中讀取內(nèi)存地址,然后再順藤摸瓜地找到保存在堆內(nèi)存中的值;引用類型的值保存在內(nèi)存中,由于js不允許直接訪問內(nèi)存,在操作的時(shí)候,其實(shí)操作的是對象的引用

兩種數(shù)據(jù)類型:

基本類型:undefined、null、Boolean、String、Number
引用類型:Function、Object、Array

兩種類型復(fù)制

基本類型變量的復(fù)制:從一個(gè)變量向另一個(gè)變量復(fù)制時(shí),會(huì)在棧中創(chuàng)建一個(gè)新值,然后把值復(fù)制到為新變量分配的位置上;

引用類型變量的復(fù)制:復(fù)制的是存儲(chǔ)在棧的指針,將指針復(fù)制到為新變量分配的位置上,而這個(gè)指針副本與原指針執(zhí)行的是存儲(chǔ)在堆中的對象。復(fù)制結(jié)束后,兩個(gè)變量指向的是同一個(gè)對象,因此操作其中的任何一個(gè)將會(huì)影響另一個(gè);

兩種變量類型檢測

typeof操作符是檢測基本類型的最佳工具

如果變量值是null或者對象,返回的是object

typeof null                 // "object"
typeof undefined            // "undefined"
typeof 1                    // "number"
typeof "1"                  // "string"
typeof true                 // "boolean"
typeof {}                   // "object"
typeof []                   // "object"
typeof function() {}        // "function"

instanceof操作符用于檢測引用類型,可以檢測它到底是什么類型的實(shí)例

如果變量是給定引用類型的實(shí)例,instanceof將會(huì)返回true

console.log(objects instanceof Object)        // objects是否是Object的實(shí)例
console.log(arrays instanceof  Array)         // arrays是否是Array的實(shí)例
兩種變量類型傳遞(值傳遞、引用類型傳遞)

通過以下兩個(gè)例子解釋值傳遞與引用類型傳遞:

var a = 1;
function add(b) {
    b += 1;
}

add(a);
console.log(a);        // a == 1,a的值沒有發(fā)生變化

值傳遞的特性:

1.只將值進(jìn)行傳遞,與原變量無關(guān),值會(huì)被復(fù)制一份,保存在內(nèi)存中另一個(gè)不同的位置;
2.當(dāng)我們修改傳遞后的值時(shí),修改的是內(nèi)存中新的位置,而原變量不會(huì)被影響,還是原來的值;
3.這種情況往往出現(xiàn)在基本類型變量中;

var a = [1];
function add(b) {
    b.push(2);
}

add(a);
console.log(a);            // [1,2] 說明原始的a的值已經(jīng)被改變了

引用傳遞的特性:

1.將內(nèi)存地址進(jìn)行傳遞,相當(dāng)于把原變量完整的傳遞過來;
2.當(dāng)我們修改傳遞后的值時(shí),修改的是內(nèi)存中原來的位置,會(huì)對原變量造成影響;
3.這種情況往往出現(xiàn)在對象中;

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

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

相關(guān)文章

  • 前端基礎(chǔ)進(jìn)階(一):內(nèi)存空間詳細(xì)圖解

    摘要:一棧數(shù)據(jù)結(jié)構(gòu)與不同,中并沒有嚴(yán)格意義上區(qū)分棧內(nèi)存與堆內(nèi)存。引用數(shù)據(jù)類型的值是保存在堆內(nèi)存中的對象。不允許直接訪問堆內(nèi)存中的位置,因此我們不能直接操作對象的堆內(nèi)存空間。為了更好的搞懂變量對象與堆內(nèi)存,我們可以結(jié)合以下例子與圖解進(jìn)行理解。 showImg(https://segmentfault.com/img/remote/1460000009784102?w=1240&h=683); ...

    _Suqin 評(píng)論0 收藏0
  • JavaScript學(xué)習(xí)總結(jié)(一)基礎(chǔ)部分

    摘要:前綴規(guī)范每個(gè)局部變量都需要有一個(gè)類型前綴,按照類型可以分為表示字符串。例如,表示以上未涉及到的其他對象,例如,表示全局變量,例如,是一種區(qū)分大小寫的語言。布爾值與字符串相加將布爾值強(qiáng)制轉(zhuǎn)換為字符串。 基本概念 javascript是一門解釋型的語言,瀏覽器充當(dāng)解釋器。js執(zhí)行時(shí),在同一個(gè)作用域內(nèi)是先解釋再執(zhí)行。解釋的時(shí)候會(huì)編譯function和var這兩個(gè)關(guān)鍵詞定義的變量,編譯完成后從...

    AlanKeene 評(píng)論0 收藏0
  • JavaScript基礎(chǔ)系列---變量及其值類型

    摘要:但對于引用類型的數(shù)據(jù)主要是對象和數(shù)組,變量指向的內(nèi)存地址,保存的只是一個(gè)引用地址指針,只能保證這個(gè)引用地址指針是固定的,至于它指向的堆內(nèi)存中的存儲(chǔ)的值是不是可變的,就完全不能控制了。 基礎(chǔ)概念 變量是存儲(chǔ)信息的容器,這里需要區(qū)分一下:變量不是指存儲(chǔ)的信息本身,而是指這個(gè)用于存儲(chǔ)信息的容器,可以把變量想象成一個(gè)個(gè)用來裝東西的紙箱子 變量需要聲明,并且建議在聲明的同時(shí)進(jìn)行初始化,如下所...

    sugarmo 評(píng)論0 收藏0
  • JavaScript學(xué)習(xí)筆記 - 變量、作用域內(nèi)存問題

    摘要:語句中的塊語句對來說,將會(huì)指定對象添加到作用域鏈中。在嚴(yán)格模式下,初始化未經(jīng)聲明的變量會(huì)導(dǎo)致錯(cuò)誤。查詢標(biāo)識(shí)符搜索過程從作用域鏈的前端開始,向上逐級(jí)查詢與給定名字匹配的標(biāo)識(shí)符。 本文記錄了我在學(xué)習(xí)前端上的筆記,方便以后的復(fù)習(xí)和鞏固。 4.1基本類型和引用類型的值 ECMAScript變量可能包含兩種不同數(shù)據(jù)類型的值:基本類型值和引用類型值。基本類型指的是簡單的數(shù)據(jù)段,而引用類型值指那些可...

    lavnFan 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<