欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

JavaScript傳遞變量: 值傳遞?引用傳遞?

 更新時(shí)間:2011年02月22日 21:19:38   作者:  
JavaScript傳遞變量 值傳遞 引用傳遞,需要的朋友可以參考下。
當(dāng)變量A賦值給變量B時(shí),會(huì)將棧中的值復(fù)制一份到為新變量分配的空間中。

如何理解?
復(fù)制代碼 代碼如下:

var x = y = 1;
y = 2;
alert(x);

x的值為多少?
復(fù)制代碼 代碼如下:

var obj = {};
var sub = {};
sub['id'] = 3;
obj['sub'] = sub;
sub['id'] = 4;
alert(obj['sub']['id']);

obj['sub']['id']的值又為多少?他們真的符合你的預(yù)期嗎?

我們分別運(yùn)行2段代碼,發(fā)現(xiàn)第1段程序中x的值沒有改變,而第2段程序中的obj['sub']['id']的值卻改變了。同樣是一個(gè)賦值操作,同樣是修改另外一份拷貝的值,為什么一段程序源變量沒變,一段程序源變量變化了呢?這個(gè)傳遞到底是按值傳遞還是按引用傳遞的呢?

李松峰翻譯的《JavaScript 高級(jí)程序設(shè)計(jì) 第二版》中給出了答案。
在開始的這2個(gè)例子中,事實(shí)上都復(fù)制了A的值給B,不同的是,在第一個(gè)例子中,A的值是int型的1,而在第二個(gè)例子中,A的值是一個(gè)地址指針,這個(gè)地址指針可以訪問到一個(gè)對(duì)象,復(fù)制之后,第1個(gè)例子中的B的值變成了新的int, 他的值為1,而第2個(gè)例子中B的值變成了新的地址指針,他的值為這個(gè)對(duì)象的地址。

下面的例子可以幫助理解
復(fù)制代碼 代碼如下:

function setName(obj){
obj.name = "test1";
obj = {};
obj.name = "test2";
}
var person = new Object();
setName(person);
alert(person.name);

可以看到的是,盡管調(diào)用了setName函數(shù)修改了變量的name屬性,但是person.name的值并沒有改變。這是因?yàn)樵诤瘮?shù)中,obj指向的地址被改變了,因此修改這個(gè)地址的name屬性,并不會(huì)對(duì)原地址的name屬性造成影響。從另一個(gè)方面,也印證了JavaScript的傳遞是按值傳遞。

相關(guān)文章

  • js基于cookie方式記住返回頁面用法示例

    js基于cookie方式記住返回頁面用法示例

    這篇文章主要介紹了js基于cookie方式記住返回頁面的用法,涉及javascript操作cookie及php針對(duì)cookie的判斷技巧,需要的朋友可以參考下
    2016-05-05
  • JavaScript設(shè)計(jì)模式之職責(zé)鏈模式

    JavaScript設(shè)計(jì)模式之職責(zé)鏈模式

    這篇文章主要介紹了JavaScript設(shè)計(jì)模式之職責(zé)鏈模式,對(duì)設(shè)計(jì)模式感興趣的同學(xué),可以參考下
    2021-04-04
  • js中事件對(duì)象和事件委托的介紹

    js中事件對(duì)象和事件委托的介紹

    今天小編就為大家分享一篇關(guān)于js中事件對(duì)象和事件委托的介紹,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧
    2019-01-01
  • uniapp頁面?zhèn)鲄⒌娜N方式實(shí)例總結(jié)

    uniapp頁面?zhèn)鲄⒌娜N方式實(shí)例總結(jié)

    在進(jìn)行頁面的跳轉(zhuǎn)的時(shí)候,往往需要我們將一些參數(shù)攜帶著傳遞過去這里的class樣式,下面這篇文章主要給大家介紹了關(guān)于uniapp頁面?zhèn)鲄⒌娜N方式,需要的朋友可以參考下
    2022-11-11
  • JS實(shí)現(xiàn)瀑布流布局

    JS實(shí)現(xiàn)瀑布流布局

    這篇文章主要為大家詳細(xì)介紹了JS實(shí)現(xiàn)瀑布流布局效果展示,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-10-10
  • onclick與listeners的執(zhí)行先后問題詳細(xì)解剖

    onclick與listeners的執(zhí)行先后問題詳細(xì)解剖

    javascript中onclick與listeners的執(zhí)行先后問題一直都是大家所疑惑的地方,接下來將為大家解決此疑惑,感興趣的朋友可以了解下哦
    2013-01-01
  • uniapp實(shí)現(xiàn)地圖點(diǎn)聚合功能的詳細(xì)教程

    uniapp實(shí)現(xiàn)地圖點(diǎn)聚合功能的詳細(xì)教程

    最近公司項(xiàng)目需求需要對(duì)設(shè)備在地圖上面進(jìn)行監(jiān)控,并在當(dāng)設(shè)備一定距離時(shí)進(jìn)行聚合,這篇文章主要給大家介紹了關(guān)于uniapp實(shí)現(xiàn)地圖點(diǎn)聚合功能的相關(guān)資料,需要的朋友可以參考下
    2022-12-12
  • 一文帶你理解JavaScript中的函數(shù)式編程

    一文帶你理解JavaScript中的函數(shù)式編程

    函數(shù)式編程 是一種 編程規(guī)范,也是一種對(duì)語言程序(比如JavaScript)本身能力的 運(yùn)用方式。本篇文章將從 編程規(guī)范 來介紹函數(shù)式編程的到底是一種什么樣的規(guī)范,希望對(duì)大家有所幫助
    2023-02-02
  • javascript表單是否為空驗(yàn)證方法

    javascript表單是否為空驗(yàn)證方法

    表單驗(yàn)證在很多地方都可以用到,本文詳細(xì)的介紹了javascript表單是否為空驗(yàn)證方法,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • 原生js操作checkbox用document.getElementById實(shí)現(xiàn)

    原生js操作checkbox用document.getElementById實(shí)現(xiàn)

    js操作checkbox本人建議用document.getElementById(checkbox_id).checked不推薦使用jquery操作checkbox,感興趣的朋友不要錯(cuò)過
    2013-10-10

最新評(píng)論