![](/img/trans.png)
[英]How to pass the value of a variable instead of a reference into a function in 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.