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