論JS函數(shù)傳參時:值傳遞與引用傳遞的區(qū)別。

本文主要講述JS中函數(shù)傳參時值傳遞與引用傳遞的區(qū)別。

首先我們可以這樣理解:

“值傳遞”是指:在函數(shù)中傳遞的是一個數(shù)值;

“引用傳遞”是指: 在函數(shù)中傳遞的是一個對象。

可以看出二者本質(zhì)區(qū)別就是傳遞的數(shù)據(jù)類型不一樣,

“值傳遞”傳遞的是一個值;“引用傳遞”傳遞的是一個對象。

下面看下代碼:

1.值傳遞:

? var a = 1;? ? ? ? ?

function fn(a){

? ? ? ? ? a ++;

? ? ? ? ? return a;? ? ?

}

a = 1;

console.log(fn(a));? ? ? ? ? ? ? ?

console.log(a);

上面代碼分別輸出為2和1。

“值傳遞”在向參數(shù)傳遞值時,被傳遞的值會被復(fù)制給一個局部變量,

傳遞完后兩個變量互不相干。

2.引用傳遞:

var obj = {

? ? name:"abc",

}

function fn(obj){

? ? obj.name = "abc";? ? //指向函數(shù)外部創(chuàng)建的對象

? ? obj = new Object();? //創(chuàng)建一個全新的對象,指向的不是外部創(chuàng)建的對象

? ? obj.name = "123";? //為新創(chuàng)建的對象添加屬性

}

var obj = new Object();

fn(obj);

console.log(obj.name); //obj為外部創(chuàng)建的對象所以輸出值為“abc”

上面代碼輸出的值是“abc”。

說明請看上述代碼注釋,如有錯誤,敬請指正。

?著作權(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)容