javasript 按值傳遞

看風景就發表於2017-05-26

現象總結如下:

1.JS的基本型別,是按值傳遞的。
2.對於物件而言:分兩種情況
(a).如果傳遞給函式的引數是物件,並且修改了這個物件的屬性(某些欄位的值),那麼奇妙的問題就來了。原引數就被修改了。
(b).如果傳遞給函式的引數是物件,並且沒有修改這個物件的屬性的值,而是把物件作為一個整體來操作的話。原引數就沒有被修改。

JavaScript高階程式設計第4.1.3節

ECMAScript所有函式引數都是按值傳遞的

向引數傳遞基本資料型別時,傳遞的值被複制給一個區域性變數
向引數傳遞引用型別時,會把值的記憶體地址複製給一個區域性變數,因此區域性變數的變化會影響外部變數
但是若區域性變數被賦予另一個引用型別,則區域性變數儲存的地址發生變化,其以後的變化,將對原來引數無任何影響

相關文章