JavaScript 傳遞參數(shù)

ECMAScript 中所有函數(shù)的參數(shù)都是按值傳遞的,言下之意就是說,參數(shù)不會按引用傳

遞,雖然變量有基本類型和引用類型之分。

function box(num) { //按值傳遞,傳遞的參數(shù)是基本類型

num += 10; //這里的num 是局部變量,全局無效

return num;

}

var num = 50;

var result = box(num);

alert(result); //60

alert(num); //50

PS:以上的代碼中,傳遞的參數(shù)是一個基本類型的值。而函數(shù)里的num 是一個局部變

量,和外面的num 沒有任何聯(lián)系。

下面給出一個參數(shù)作為引用類型的例子。

function box(obj) { //按值傳遞,傳遞的參數(shù)是引用類型

obj.name = 'Lee';

}

var p = new Object();

box(p);

alert(p.name);

PS:如果存在按引用傳遞的話,那么函數(shù)里的那個變量將會是全局變量,在外部也可

以訪問。比如PHP 中,必須在參數(shù)前面加上&符號表示按引用傳遞。而ECMAScript 沒有這

些,只能是局部變量??梢栽赑HP 中了解一下。

PS:所以按引用傳遞和傳遞引用類型是兩個不同的概念。

function box(obj) {

obj.name = 'Lee';

var obj = new Object(); //函數(shù)內(nèi)部又創(chuàng)建了一個對象

obj.name = 'Mr.'; //并沒有替換掉原來的obj

}

最后得出結(jié)論,ECMAScript 函數(shù)的參數(shù)都將是局部變量,也就是說,沒有按引用傳遞。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容