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

資訊專欄INFORMATION COLUMN

談?wù)勚祩鬟f

awkj / 2209人閱讀

摘要:以上的代碼也可以寫為這樣在處,函數(shù)會(huì)將參數(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ù)類型從一個(gè)復(fù)制到另一個(gè),會(huì)在變量對(duì)象上創(chuàng)建一個(gè)新值,然后把該值復(fù)制到新變量分配的位置上,改變其中一個(gè)不會(huì)影響另一個(gè)。

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

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

引用類型

引用類型我們采用數(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ù)組長(zhǎng)度,可以看出輸出的結(jié)果都為[10,2,3,4]. 和基本數(shù)據(jù)類型完全不同.

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

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

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]

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

可以實(shí)驗(yàn)一下console.log(new Array(1,2)===new Array(1,2)),這個(gè)在控制臺(tái)返回的是false

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

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

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

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

在像參數(shù)傳遞基本類型的值時(shí),被傳遞的值會(huì)被先復(fù)制給一個(gè)局部變量,其實(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ù)會(huì)將參數(shù)先聲明并賦值,值就為下面?zhèn)魅氲膮?shù)的值,num的值為10,因此賦得值也為10。但此時(shí)函數(shù)中的num和函數(shù)外部的num其實(shí)是毫不相關(guān)的,因此并不會(huì)相互影響

引用類型
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ù)的開頭就會(huì)將arr賦值為傳來(lái)的數(shù)值,雖然也是一開始聲明的引用類型的副本,但是因?yàn)橐妙愋蛡鱽?lái)的數(shù)值是地址,因此函數(shù)中的arr和函數(shù)外面的arr都將引用同一個(gè)地址中的數(shù)組對(duì)象,因?yàn)閍rr指向的數(shù)組對(duì)象在堆中只有一個(gè),又是全局變量,因此這兩個(gè)arr是相同的,同樣我們?cè)倏茨且环N聲明數(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]

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

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

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

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

相關(guān)文章

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

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

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

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

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

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

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

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

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

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

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

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

0條評(píng)論

awkj

|高級(jí)講師

TA的文章

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