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

資訊專欄INFORMATION COLUMN

談?wù)勚祩鬟f

awkj / 2206人閱讀

摘要:以上的代碼也可以寫為這樣在處,函數(shù)會將參數(shù)先聲明并賦值,值就為下面?zhèn)魅氲膮?shù)的值,的值為因此賦得值也為。

ECMAScript變量可能包含兩種不同的數(shù)據(jù)類型:基本數(shù)據(jù)類型和引用數(shù)據(jù)類型,這兩種類型的值傳遞是存在不同的.

在我們談這兩種數(shù)據(jù)類型的值傳遞前,為了便于理解,我想首先談一下這兩種數(shù)據(jù)類型有關(guān)復(fù)制操作存在的不同

數(shù)據(jù)類型的復(fù)制 基本類型
var num1 = 10;
var num2 = num1;
    num2 = 11;
console.log(num1);//10
console.log(num2);//11

基本數(shù)據(jù)類型從一個復(fù)制到另一個,會在變量對象上創(chuàng)建一個新值,然后把該值復(fù)制到新變量分配的位置上,改變其中一個不會影響另一個。

本小白用拙劣的畫功演示一下

一開始聲明變量num1并賦值為10,它便以圖中的形式存在某種結(jié)構(gòu)中,當(dāng)用num1的值來初始化num2的時候,此時就相當(dāng)于聲明變量num2并賦值為num1中的值,該值只是num1中的一個副本,賦值結(jié)束,這兩個變量便再無瓜葛,進(jìn)行后面的操作也不會相互影響

引用類型

引用類型我們采用數(shù)組,數(shù)組的聲明有兩種方式,一種為var 數(shù)組名 = []另一種為var 數(shù)組名 = new array()

var arr1 = [1,2,3,4];
var arr2 = arr1;
    arr2[0] = 10;
console.log(arr1);//[10,2,3,4]
console.log(arr2);//[10,2,3,4]

此處及下文輸出省略掉數(shù)組長度,可以看出輸出的結(jié)果都為[10,2,3,4]. 和基本數(shù)據(jù)類型完全不同.

當(dāng)聲明數(shù)組變量并賦值的時候,同樣也會存入一個結(jié)構(gòu)當(dāng)中,但是這個結(jié)構(gòu)不能存[1,2,3,4]這種數(shù)據(jù),要存到堆中去,就是圖片右邊那個橢圓形的區(qū)域,但是存入的數(shù)據(jù)還是要找到它。每個存儲位置都有相應(yīng)的地址,所以它在左邊那個結(jié)構(gòu)中存入的是一個指向數(shù)組對象的這樣的一個地址。

當(dāng)復(fù)制引用類型變量的時候,同樣也會將存儲在左邊結(jié)構(gòu)中的值復(fù)制一份放到為新變量分配的空間中去,只不過因為這個值的副本是一個指向堆中原數(shù)組對象的地址,兩個變量名就相當(dāng)于引用了同一個地址中的內(nèi)容。因此,改變其中的一個變量,就會影響另一個

var arr3=[1,2,3,4];
var arr4=arr3;
arr4=[5,6,7,8];
console.log(arr3);//[1,2,3,4]
console.log(arr4);//[5,6,7,8]

這個相比于前面那個,只是在第三行代碼中出現(xiàn)了不同,arr4=[5,6,7,8]將一個新的數(shù)組對象賦給變量arr4,這時arr4后的地址就改變了,也就指向了新的數(shù)組對象,這兩個變量也就完全不相同了.

可以實(shí)驗一下console.log(new Array(1,2)===new Array(1,2)),這個在控制臺返回的是false

那好,現(xiàn)在有了這些鋪墊,我們再來談我們今天的主要內(nèi)容.

數(shù)據(jù)類型的值傳遞 基本類型
var num = 10;

function change(num){
  num = 11;
  console.log(num);//11
}

change(num);
console.log(num);//10

在像參數(shù)傳遞基本類型的值時,被傳遞的值會被先復(fù)制給一個局部變量,其實(shí)就可以理解為基本數(shù)據(jù)類型的賦值。以上的代碼也可以寫為這樣

var num = 10;

function change(){
  var num = 10;//look
  num = 11;
  console.log(num);//11
}

change(num);
console.log(num);//10

在look處,函數(shù)會將參數(shù)先聲明并賦值,值就為下面?zhèn)魅氲膮?shù)的值,num的值為10,因此賦得值也為10。但此時函數(shù)中的num和函數(shù)外部的num其實(shí)是毫不相關(guān)的,因此并不會相互影響

引用類型
var arr = [1,2,3,4];

function change(arr){
  arr[0] = 10;
  console.log(arr);//[10,2,3,4]
}

change(arr);
console.log(arr)//[10,2,3,4]

引用類型也如此,也可以理解為引用類型的復(fù)制操作,在函數(shù)的開頭就會將arr賦值為傳來的數(shù)值,雖然也是一開始聲明的引用類型的副本,但是因為引用類型傳來的數(shù)值是地址,因此函數(shù)中的arr和函數(shù)外面的arr都將引用同一個地址中的數(shù)組對象,因為arr指向的數(shù)組對象在堆中只有一個,又是全局變量,因此這兩個arr是相同的,同樣我們再看那一種聲明數(shù)組并賦值的.

var arr=[1,2,3,4];

function change(arr) {
  arr=[4,5,6,7];
  console.log(arr);//[4,5,6,7]
}

change(arr);
console.log(arr);//[1,2,3,4]

那這個也就應(yīng)該可以理解了,雖然在傳參的時候傳入的確實(shí)是一開始聲明的數(shù)組對象的地址的副本,但是因為在函數(shù)內(nèi)部又聲明了一個新的數(shù)組對象,在這里arr引用的就是一個局部的數(shù)組對象了,而這個局部對象就會在函數(shù)結(jié)束后立即被銷毀,不會影響函數(shù)外部的數(shù)組對象

本小白大二學(xué)生...自學(xué)前端一年,水平有限,就先解釋這么多了,如果有不對的還請大佬們指點(diǎn),本小白定當(dāng)悔過自新,重新做人.

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

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

相關(guān)文章

  • 談?wù)?/em>我所理解的閉包,js、php、golang里的closure

    摘要:當(dāng)初看這個解釋有點(diǎn)懵逼,理解成閉包就是函數(shù)中的函數(shù)了。里的閉包最近不滿足于只干前端的活,開始用起了。里的閉包最近在學(xué)習(xí)語言,讓我們來看一下語言里的閉包。在中,閉包特指將函數(shù)作為值返回的情況,被返回的函數(shù)引用了生成它的母函數(shù)中的變量。 本人開始接觸編程是從js開始的,當(dāng)時網(wǎng)上很多人說閉包是難點(diǎn),各種地方對閉包的解釋也是千奇百怪。如今開始接觸js以外的各種編程語言,發(fā)現(xiàn)不光是js,php、...

    betacat 評論0 收藏0
  • 談?wù)?/em>我所理解的閉包,js、php、golang里的closure

    摘要:當(dāng)初看這個解釋有點(diǎn)懵逼,理解成閉包就是函數(shù)中的函數(shù)了。里的閉包最近不滿足于只干前端的活,開始用起了。里的閉包最近在學(xué)習(xí)語言,讓我們來看一下語言里的閉包。在中,閉包特指將函數(shù)作為值返回的情況,被返回的函數(shù)引用了生成它的母函數(shù)中的變量。 本人開始接觸編程是從js開始的,當(dāng)時網(wǎng)上很多人說閉包是難點(diǎn),各種地方對閉包的解釋也是千奇百怪。如今開始接觸js以外的各種編程語言,發(fā)現(xiàn)不光是js,php、...

    zhoutao 評論0 收藏0
  • java基礎(chǔ)之談?wù)?/em>==和equals

    摘要:今天就來談?wù)労偷淖饔煤蛥^(qū)別。對于基礎(chǔ)類型的作用就是判斷值是否相等比如是是。就是重寫了方法,所以出現(xiàn)了和結(jié)果不一致的情況。當(dāng)然重寫是有一定的標(biāo)準(zhǔn)的,如傳遞性,對稱性等等,具體可以看源碼要求不再一一展開。 判斷對象是否相等是我們在項目中經(jīng)常用到的,也是入門java必學(xué)的知識。今天就來談?wù)?=和equals的作用和區(qū)別。 1.==如何判斷相等 先看一下一段代碼: int ...

    Scorpion 評論0 收藏0
  • 從Mixin到hooks,談?wù)?/em>對React16.7.0-alpha中即將引入的hooks的理解

    摘要:已經(jīng)被廢除,具體缺陷可以參考二為了解決的缺陷,第二種解決方案是高階組件簡稱。我們定義了父組件,存在自身的,并且將自身的通過的方式傳遞給了子組件。返回一個標(biāo)識該的變量,以及更新該的方法。 ??為了實(shí)現(xiàn)分離業(yè)務(wù)邏輯代碼,實(shí)現(xiàn)組件內(nèi)部相關(guān)業(yè)務(wù)邏輯的復(fù)用,在React的迭代中針對類組件中的代碼復(fù)用依次發(fā)布了Mixin、HOC、Render props等幾個方案。此外,針對函數(shù)組件,在Reac...

    ZweiZhao 評論0 收藏0
  • 從Mixin到hooks,談?wù)?/em>對React16.7.0-alpha中即將引入的hooks的理解

    摘要:已經(jīng)被廢除,具體缺陷可以參考二為了解決的缺陷,第二種解決方案是高階組件簡稱。我們定義了父組件,存在自身的,并且將自身的通過的方式傳遞給了子組件。返回一個標(biāo)識該的變量,以及更新該的方法。 ??為了實(shí)現(xiàn)分離業(yè)務(wù)邏輯代碼,實(shí)現(xiàn)組件內(nèi)部相關(guān)業(yè)務(wù)邏輯的復(fù)用,在React的迭代中針對類組件中的代碼復(fù)用依次發(fā)布了Mixin、HOC、Render props等幾個方案。此外,針對函數(shù)組件,在Reac...

    funnyZhang 評論0 收藏0

發(fā)表評論

0條評論

awkj

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<