簡體   English   中英

為什么這個Javascript示例復制變量值而不是通過引用傳遞?

[英]Why does this Javascript example copy the variable value instead of pass by reference?

Javascript The Good Parts中 ,它指出:

替代文字

所以我希望下面的代碼示例輸出1001,因為“從不復制對象,而是通過引用傳遞對象”,那么為什么輸出0000

var page_item = {
  id_code : 'welcome',
  title : 'Welcome',
  access_groups : {
      developer : '0010',
      administrator : '0100'
  }
};
page_item.access_groups.member = '0000';
var member = page_item.access_groups.member;
member = '1001';

$('p#test').html(page_item.access_groups.member); //should be "1001" but is "0000"

添加:

@Gareth @David,謝謝,這是我在本示例中試圖顯示的內容:

var page_item = {
  id_code : 'welcome',
  title : 'Welcome',
  access_groups : {
      developer : '0010',
      administrator : '0100'
  }
};
var page_item2 = page_item;
page_item2.access_groups.developer = '1001';

$('p#test').html(page_item.access_groups.developer); //is '1001'

不要在C ++上下文中考慮按引用傳遞,因為它不一樣。

var member = page_item.access_groups.member // Sets member to this value
member = '1001'; // Now sets it to another value

如果在字符串上有一個方法可以改變它們,則可以這樣:

member.removeLastLetter();

會改變page_item.access_groups.member 但是,使用您的=您將更改變量的引用,而不是先前引用的對象

因為page_item.access_groups.member是字符串而不是Object。

這可能被JS-Gurus打擊了,但是基本上它像這樣下降:

對象通過引用傳遞。
字符串(數字等,基本上是一維變量)按值傳遞。

我確實嘗試並理解了有關數據類型的冗長解釋,但是我非常需要完成一些工作,還沒有時間來仔細研究它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM