javascript參數傳址與傳值

一直認爲javascript函數的參數是普通的傳值,對象的傳址.

今天想把一個對象傳到函數裏面去重新生成後傳出來,才知道我還是有地方理解錯了.

先看http://beba-brook.blogspot.com/2006/06/vs.html的一段代碼:

<html>

<body>

<script>

/*函數宣告

*********************/

function FuncA(num,bool){//測試數值和布林

num++;

bool=false;

document.write("在函數FuncA中的變數num值為:"+num+";變數bool值為"+bool+"<br/>");

}

function FuncB(str,man){//測試字串和物件

str="骷髏紳士";

man.name="劍俠鼻唄";

document.write("呼叫FuncB時:"+str+";"+man.name+"<br/>");

}

/*測試

*********************/

var num=1; //數值

var bool=true; //布林

var str="布魯克"; //字串

var man=new Object(); //物件

man.name="布魯克";

document.write("呼叫FuncA前,變數num的值為:"+num+"。變數bool的值為

:"+bool+"<br/>");

FuncA(num,bool);

document.write("呼叫FuncA後,變數num的值為:"+num+"。變數bool的值為

:"+bool+"<br/>");

document.write("呼叫FuncB前:"+str+"。"+man.name+"<br/>");

FuncB(str,man);

document.write("呼叫FuncB後:"+str+"。"+man.name+"<br/>");

</script>

</body>

</html>

運行結果沒問題,與我想象的一樣:

呼叫FuncA前,變數num的值為:1。變數bool的值為:true

在函數FuncA中的變數num值為:2;變數bool值為false

呼叫FuncA後,變數num的值為:1。變數bool的值為:true

呼叫FuncB前:布魯克。布魯克

呼叫FuncB時:骷髏紳士;劍俠鼻唄

呼叫FuncB後:布魯克。劍俠鼻唄

但,如果在FuncB中加一句

str="骷髏紳士";

man=new Object();

man.name="劍俠鼻唄";

結果:

呼叫FuncB前:布魯克。布魯克

呼叫FuncB時:骷髏紳士;劍俠鼻唄

呼叫FuncB後:布魯克。布魯克

新的man對象並沒有返回來.

所以,我現在要這樣理解,javascript都是拷貝值的,只是對象拷貝的是對象的地址,所以通過地址引用,可以修改其中的屬性.但如果在程序內部更改了這個地址,它是不會傳回來的.

不再折騰了,要想修改東西,還是用return來實現.

用javascript獲得地址欄參數的兩種方法
<script language="JavaScript"><!--function Request(strName){var strHref = "=測試測試";var intPos = strHref.indexOf("?");var strRight = strHref.substr(intPos + 1);var arrTmp = strRight.split("...查看完整版>>用javascript獲得地址欄參數的兩種方法
 
用javascript獲取傳入參數
<script languege=javascript><!-- function getQuery(name){ var reg = new RegExp("(^|&)"+ name +"=([^&]*)(&|$)"); var r = window.location.search.substr(1).match(reg); if (r...查看完整版>>用javascript獲取傳入參數
 
javascript 獲取GET方法的參數
<script> url = location.search.substr(1); if(url.length > 0) { ar = url.split(/[&=]/); for(i=0;i<ar.length;i+=2) { alert("參數:"+ar+":"+ar[i+1]+"<br...查看完整版>>javascript 獲取GET方法的參數
 
js文件封裝javascript在html中獲取url參數
函數如下:<script type="text/javascript">function $G(){var Url=top.window.location.href;var u,g,StrBack='';if(arguments[arguments.length-1]=="#") u=Url.split("#");else u=Url.split("?");if (u...查看完整版>>js文件封裝javascript在html中獲取url參數
 
用javascript實現html頁面之間的參數傳遞
摘要:用javascript實現html頁面之間的參數傳遞=========================================================聲明: 作者:紀國瑞 華北電力大學控制系統中心 要轉載此文,必須包含本聲明,並不得修改本聲...查看完整版>>用javascript實現html頁面之間的參數傳遞
 
jsp中怎麽將jsp定義的參數傳給javascript定義的函數?急
jsp中怎麽將jsp定義的參數傳給javascript定義的函數?例如: <%String str1,str2; //從數據庫中得到多個str1,str2 //在此項調用 drawline(str1,str2) %> <script> fu...查看完整版>>jsp中怎麽將jsp定義的參數傳給javascript定義的函數?急
 
javascript向jsp傳遞參數的一種手段-----使用xmlhttp對象
xmlhttp對象可以用來在不刷新頁面的情況下傳遞參數,可作爲一種javascript向jsp傳遞參數的一種方法。下面就是一個javascript向jsp傳遞參數的例子:xmlhttp.jsp<%@ page contentType="text/html; charset=GB2...查看完整版>>javascript向jsp傳遞參數的一種手段-----使用xmlhttp對象
 
JavaScript---window.location.replace使用方法以及參數說明
轉自 <a href="http://oldblog.blogchina.com/article_244554.1428626.html"> konggeer's blog</a>一、window.location.replace()支持環境: JavaScript1.0+/JScript1.0+/Nav2+/IE3+/Opera3+二、基本語法:...查看完整版>>JavaScript---window.location.replace使用方法以及參數說明
 
用javascript實現html頁面之間的參數傳遞
=========================================================聲明: 作者:紀國瑞 要轉載此文,必須包含本聲明,並不得修改本聲明。 ========================================================= ...查看完整版>>用javascript實現html頁面之間的參數傳遞
 
 
回到王朝網路移動版首頁