簡單來說,把函式外部的值複製給函式內部的引數,就和把值從乙個變數複製到另乙個變數一樣。
然而並不是這樣分,應分為兩種:
值傳遞引用傳遞
① 在向引數傳遞基本型別的值時,被傳遞的值會被賦值給另乙個變數。如下面**:
function
fn(num)
var a =20;
var b =
fn(a)
;//按值傳遞 num = b;
console.
log(a)
;// 20, 沒變化
console.
log(b)
;// 30
② 在向引數傳遞引用型別時,引用傳遞的是指標的值,obj=new object()改寫了自己的指向,並不會影響到 b 的指向,這種方式就是按引用傳遞。如下面**:
function
fn(obj)
var b =
newobject()
;fn(b);
console.
log(b.name)
;//"old"
論JS函式傳參時 值傳遞與引用傳遞的區別
值傳遞 值傳遞的資料為基本資料型別,基本資料型別在記憶體中存放的是數值本身 值傳遞為單向傳遞,只能由實參傳遞給形參。引用傳遞 引用傳遞的資料為複雜資料型別,複雜資料型別在記憶體中存放的是位址,再根據位址找到數值。先舉兩個簡單的例子 基本資料型別 number string boolean null ...
論js函式傳參時 值傳遞與引用傳遞的區別
值傳遞的是簡單的資料型別 引用傳遞的是複雜型別的資料。在記憶體中是分為兩個區域 棧 和 堆。棧用來存放位址,堆是用來存放值的。值傳遞的資料不分位址和值 位址 值 引用傳遞的資料區分位址和值,找到位址後需要根據位址說明的情況才能找到相對應的值。值傳遞的資料位址和值是同乙個內容,因此在拷貝之後,改變新的...
逆戰 論JS函式傳參時 值傳遞與引用傳遞的區別
論js函式傳參時 值傳遞與引用傳遞的區別toc 函式呼叫中,傳遞是乙個數值,我們稱為 值傳遞 函式呼叫中,傳遞是物件,一般稱為 引用傳遞 這二者的本質區別就在於傳遞的資料型別不一樣,值傳遞傳遞的是乙個值,而引用傳遞傳遞的是乙個物件。1.值傳遞 var num 5 function fn num fn...