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

資訊專欄INFORMATION COLUMN

舉三個(gè)列子,弄清楚js中值傳遞。

Big_fat_cat / 2569人閱讀

摘要:值傳遞的典型這是典型的值傳遞的例子,只是把它的值給了局部變量,因此他們的存儲(chǔ)是分開(kāi)的,函數(shù)不會(huì)改變的值??磥?lái)的參數(shù)傳遞還是有點(diǎn)小復(fù)雜的。

預(yù)備知識(shí) 首先要明白基本類型和引用類型的區(qū)別: 基本類型:
var num1=5;
var num2=num1;

基本類型存儲(chǔ)圖

從他們的存儲(chǔ)空間可知:num1和num2的存儲(chǔ)是獨(dú)立的,改變其中一個(gè)的值,另一個(gè)不會(huì)受到影響

引用類型:
var obj1=new Object();
var obj2=obj1;
obj1.name="Nicholas";
console.log(obj2.name);   //Nicholas

引用類型存儲(chǔ)圖

從他們的存儲(chǔ)空間可知,改變其中一個(gè)的屬性值,另一個(gè)的屬性值也會(huì)改變。

值傳遞的典型
function addTen(num){
    return num+10;
}
var count=20;
var result=addTen(count);   
console.log(count);        //20
console.log(result);       //30

這是典型的值傳遞的例子,count只是把它的值給了局部變量,因此他們的存儲(chǔ)是分開(kāi)的,函數(shù)不會(huì)改變count的值。

傳遞引用類型也屬于值傳遞
function setName(obj){
    obj.name="Nicholas";
}
var person=new Object();
setName(person);
console.log(person.name);          //Nicholas

咦?person對(duì)象的值已經(jīng)改變了呀,為什么它還是值傳遞呢?
先讓我們?cè)賮?lái)看一個(gè)例子吧:

function setName(obj){
    obj.name="Nicholas";
    obj=new Object();
    obj.name="Greg";
}
var person=new Object();
setName(person);
console.log(person.name);          //Nicholas

如果為引用傳遞:則在第二個(gè)例子中,person把它的地址給了局部obj,局部obj擁有了另一把可以進(jìn)入person操作的鑰匙,obj在第三行new的時(shí)候便會(huì)把person指向一個(gè)新的對(duì)象,person的名字將變?yōu)镚reg,可是結(jié)果并非如此,所以不是引用傳遞。
person存儲(chǔ)在堆中,是全局的,具有唯一性,person傳值時(shí),obj可以對(duì)他進(jìn)行操作,可以理解為person給了obj鑰匙,但是門的掌控權(quán)仍在person手中,obj不能再建一個(gè)新門。
看來(lái)js的參數(shù)傳遞還是有點(diǎn)小復(fù)雜的。

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

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

相關(guān)文章

  • 人工智能革命:人類會(huì)永生還是滅亡(上)

    摘要:但牛津哲大學(xué)哲學(xué)家兼首席人工智能科學(xué)家認(rèn)為,我們可以將所有的結(jié)果歸納為兩大類。認(rèn)為,物種不朽與物種滅絕同樣具有吸引人的狀態(tài),即如果我們能做到這一點(diǎn),我們將永遠(yuǎn)不受滅絕的影響我們將擁有戰(zhàn)勝死亡的機(jī)會(huì)。 showImg(https://segmentfault.com/img/remote/1460000019316706); 我們面臨著一個(gè)非常困難的問(wèn)題,在一個(gè)未知的時(shí)間內(nèi)來(lái)解決它,而人...

    DevYK 評(píng)論0 收藏0
  • JS中的call(),apply()和bind()方法

    摘要:奔著一星期徹底弄清楚一個(gè)小知識(shí)點(diǎn)的目的這次的目標(biāo)是方法在實(shí)際項(xiàng)目中經(jīng)常會(huì)用到這三個(gè)函數(shù)只是簡(jiǎn)單的知道都是用來(lái)進(jìn)行上下文綁定的這三個(gè)函數(shù)都可以實(shí)現(xiàn)現(xiàn)在看來(lái)這三者還是有很大區(qū)別的特別是和其他兩個(gè)的區(qū)別先說(shuō)和目的是改變函數(shù)的執(zhí)行上下文下面列舉一些 奔著一星期徹底弄清楚一個(gè)javascript小知識(shí)點(diǎn)的目的,這次的目標(biāo)是call apply bind方法 在實(shí)際項(xiàng)目中,經(jīng)常會(huì)用到這三個(gè)函數(shù),只...

    nifhlheimr 評(píng)論0 收藏0
  • [譯文] JavaScript工作原理:內(nèi)存管理+如何處理4種常見(jiàn)的內(nèi)存泄露

    摘要:本系列的第一篇文章著重提供一個(gè)關(guān)于引擎運(yùn)行時(shí)和調(diào)用棧的概述。在硬件層面,計(jì)算機(jī)內(nèi)存由大量的觸發(fā)器組成。每個(gè)觸發(fā)器包含幾個(gè)晶體管能夠存儲(chǔ)一個(gè)比特譯注位??梢酝ㄟ^(guò)唯一標(biāo)識(shí)符來(lái)訪問(wèn)單個(gè)觸發(fā)器,所以可以對(duì)它們進(jìn)行讀寫操作。比特稱為個(gè)字節(jié)。 原文 How JavaScript works: memory management + how to handle 4 common memory lea...

    adam1q84 評(píng)論0 收藏0
  • JavaScript 是傳值調(diào)用還是傳引用調(diào)用?

    摘要:所以傳遞給函數(shù)的值是這個(gè)值,所以函數(shù)執(zhí)行結(jié)束原始變量并不會(huì)改變。傳值調(diào)用在傳值調(diào)用中,傳遞給函數(shù)參數(shù)是函數(shù)被調(diào)用時(shí)所傳實(shí)參的拷貝。引用類型變量的值是一個(gè)指針,指向堆內(nèi)存中的實(shí)際對(duì)象。所以傳共享調(diào)用也可以說(shuō)是傳值調(diào)用。 1. 例子 先來(lái)看兩個(gè)個(gè)來(lái)自于 《JavaScript 高級(jí)程序設(shè)計(jì)》P70-P71 的兩個(gè)例子。 1.1. 基本類型參數(shù)傳遞 function addTen(num) ...

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

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

0條評(píng)論

Big_fat_cat

|高級(jí)講師

TA的文章

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