JS函式傳參時 值傳遞與引用傳遞的區別

2021-10-03 04:04:08 字數 590 閱讀 8791

簡單來說,把函式外部的值複製給函式內部的引數,就和把值從乙個變數複製到另乙個變數一樣。

然而並不是這樣分,應分為兩種:

值傳遞引用傳遞

① 在向引數傳遞基本型別的值時,被傳遞的值會被賦值給另乙個變數。如下面**:

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...