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

2021-10-03 04:04:08 字數 591 閱讀 3566

@論js函式傳參時:值傳遞與引用傳遞的區別toc

函式呼叫中,傳遞是乙個數值,我們稱為 「值傳遞」。

函式呼叫中,傳遞是物件,一般稱為 「引用傳遞」。

這二者的本質區別就在於傳遞的資料型別不一樣,值傳遞傳遞的是乙個值,而引用傳遞傳遞的是乙個物件。

1.值傳遞

var num =5;

function fn(num)

fn(5);

console.log(num);

以上**得到的結果為5

宣告變數num並賦值,這個num是乙個值型別,當為函式傳遞引數的時候,是將此值複製乙份傳遞給函式,所以在函式執行之後,num本身的值並沒有被改變。

特點: 有多個不同的空間,空間都是在棧中的。 所以 修改函式中的空間,對外部空間是沒有影響的

2.引用傳遞

var num=5;

function fn()

fn(5);

console.log(num);

以上**得到的結果為6

函式中沒有num的空間,對外部的物件進行了修改,因為函式中修改了外部變數num。所以值發生了改變。

特點:實在儲存的空間只有乙份。

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

值傳遞 值傳遞的資料為基本資料型別,基本資料型別在記憶體中存放的是數值本身 值傳遞為單向傳遞,只能由實參傳遞給形參。引用傳遞 引用傳遞的資料為複雜資料型別,複雜資料型別在記憶體中存放的是位址,再根據位址找到數值。先舉兩個簡單的例子 基本資料型別 number string boolean null ...

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

值傳遞的是簡單的資料型別 引用傳遞的是複雜型別的資料。在記憶體中是分為兩個區域 棧 和 堆。棧用來存放位址,堆是用來存放值的。值傳遞的資料不分位址和值 位址 值 引用傳遞的資料區分位址和值,找到位址後需要根據位址說明的情況才能找到相對應的值。值傳遞的資料位址和值是同乙個內容,因此在拷貝之後,改變新的...

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

簡單來說,把函式外部的值複製給函式內部的引數,就和把值從乙個變數複製到另乙個變數一樣。然而並不是這樣分,應分為兩種 值傳遞引用傳遞 在向引數傳遞基本型別的值時,被傳遞的值會被賦值給另乙個變數。如下面 function fn num var a 20 var b fn a 按值傳遞 num b con...