亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

深入理解JavaScript中的傳值與傳引用

 更新時間:2013年12月09日 10:21:21   作者:  
這篇文章主要是對JavaScript中的傳值與傳引用進(jìn)行了詳細(xì)的介紹,需要的朋友可以過來參考下,希望對大家有所幫助

1.傳值(by value)

變量的值被復(fù)制出一份,與原來的值將不相干,也就是說即使新的值被修改,原來的值也不會改變,在JavaScript中基本類型都是傳值的.

復(fù)制代碼 代碼如下:

function testPassValue()
{
   var m=1;
   var n=2;
   //將m,n的值復(fù)制一份,傳遞到passValue
   passValue(m,n);
   alert(m);  //將是原有的值
}
function passValue(a,b)
{
  a = a+b; //改變a的值,這里a只是原有值的一份copy
  alert(a); 
}

輸出結(jié)果:
3

1

2.傳引用(by reference).

引用本身復(fù)制一份傳給function,引用指向的對象并沒有被復(fù)制傳遞(java中也是如此),在function中,如果改變了對象的屬性的值,由于和原來的引用指向的是同一個對象,因此在通過原來的引用訪問到的將是修改過的值;

但是如果只是在function中將引用指向一個新的對象,將不會改變原對象的值,改變的只是復(fù)制的這一份引用.

復(fù)制代碼 代碼如下:

function testPassValue()
{
  var date = new Date(2006,02,27);
  alert(date.getDate());  //輸出為 27
  //將date引用本身復(fù)制一份,傳遞到passReference,注意date所指向的對象并沒有被復(fù)制
  passReference(date);
  alert(date.getDate());  //輸出為12
  //同上
  changeReference(date);
  alert(date.getDate());  //輸出還為12
}
function passReference(da)
{
 //由于da和原引用指向的是同一個對象,在function外,通過原有的引用訪問到的將是對象的日期屬性值,將是修改之后的值.
   da.setDate(12);
}
function changeReference(da)
{
   //此時da引用實(shí)際上是原引用的一份copy,將引用本身重新賦值,將不會影響原引用
   da= new Date(2007,05,11);

//將da引用指向一個新的對象,此時原引用指向的還是原來的對象
   alert(da.getDate());     // 輸出為11
}


3 特殊的String 

在JavaScript中,String也傳引用的. js中只有charAt方法,而沒有對應(yīng)的修改方法,和java中的String相同,都具有不變性.

復(fù)制代碼 代碼如下:

var s1 = "hello";
var s2 = "hell" + "o";
if (s1 == s2)  
alert("s1 = s2");  //這句會不會執(zhí)行? java用的熟的人可能會認(rèn)為不會執(zhí)行(這句話我頗有微詞,java中也是會執(zhí)行的!),因?yàn)閖ava中的==比較的是同一性. 事實(shí)上在js中對String==比較的是值是否相等,所以這句話會執(zhí)行. 但是對其他的Object == 比較和java中一樣是同一性.

相關(guān)文章

  • 使用Electron自制錄屏軟件

    使用Electron自制錄屏軟件

    錄屏軟件對于我們來說都不陌生了,本文我們要做的事情是實(shí)現(xiàn)自己的錄屏軟件,載體使用Electron,因?yàn)樗m合錄制桌面的場景,下面我們就來看看具體實(shí)現(xiàn)方法吧
    2024-01-01
  • koa2服務(wù)端使用jwt進(jìn)行鑒權(quán)及路由權(quán)限分發(fā)的流程分析

    koa2服務(wù)端使用jwt進(jìn)行鑒權(quán)及路由權(quán)限分發(fā)的流程分析

    這篇文章主要介紹了koa2服務(wù)端使用jwt進(jìn)行鑒權(quán)及路由權(quán)限分發(fā) ,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-07-07
  • JS按回車鍵實(shí)現(xiàn)登錄的方法

    JS按回車鍵實(shí)現(xiàn)登錄的方法

    這篇文章主要介紹了JS按回車鍵實(shí)現(xiàn)登錄的方法,在web程序設(shè)計(jì)中非常實(shí)用的技巧,可用于表單提交的情況,具有很好的用戶體驗(yàn),需要的朋友可以參考下
    2014-08-08
  • JS優(yōu)化與惰性載入函數(shù)實(shí)例分析

    JS優(yōu)化與惰性載入函數(shù)實(shí)例分析

    這篇文章主要介紹了JS優(yōu)化與惰性載入函數(shù),結(jié)合具體實(shí)例形式分析了JS惰性載入的原理、實(shí)現(xiàn)技巧與相關(guān)注意事項(xiàng),需要的朋友可以參考下
    2017-04-04
  • JavaScript異步編程常見面試題匯總

    JavaScript異步編程常見面試題匯總

    本文將帶大家學(xué)習(xí)異步編程這一塊內(nèi)容,鑒于異步編程是js中至關(guān)重要的內(nèi)容,所以我們將學(xué)習(xí)異步編程涉及到的重點(diǎn)和難點(diǎn),同時這一塊內(nèi)容也是面試常考范圍,希望對大家有所幫助
    2023-02-02
  • 理解JavaScript原型鏈

    理解JavaScript原型鏈

    簡單說一說對JavaScript原型鏈的理解,希望對大家學(xué)習(xí)JavaScript原型鏈有所幫助,具體內(nèi)容如下
    2016-10-10
  • JavaScript 實(shí)現(xiàn)完美兼容多瀏覽器的復(fù)制功能代碼

    JavaScript 實(shí)現(xiàn)完美兼容多瀏覽器的復(fù)制功能代碼

    這兩天在做Web前端時,遇到需求通過js實(shí)現(xiàn)文本復(fù)制的功能。經(jīng)過一番測試,終于實(shí)現(xiàn)了出來,有需要的小伙伴可以參考下。
    2015-04-04
  • redux.js詳解及基本使用

    redux.js詳解及基本使用

    Redux我們可以把它理解成一個狀態(tài)管理器,可以把狀態(tài)(數(shù)據(jù))存在Redux中,以便增、刪、改。這篇文章主要介紹了redux.js詳解及基本使用,需要的朋友可以參考下
    2019-05-05
  • JavaScript實(shí)現(xiàn)網(wǎng)頁版五子棋游戲

    JavaScript實(shí)現(xiàn)網(wǎng)頁版五子棋游戲

    這篇文章主要為大家詳細(xì)介紹了JavaScript實(shí)現(xiàn)網(wǎng)頁版五子棋游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-07-07
  • js 右鍵菜單,支持不同對象不同菜單(兼容IE、Firefox)

    js 右鍵菜單,支持不同對象不同菜單(兼容IE、Firefox)

    版本雖然很老也不符合標(biāo)準(zhǔn)了,不過代碼是值得參考的,需要右鍵菜單的朋友可以參考下。
    2010-01-01

最新評論