本系列文章是本人學習相關知識時所積累的筆記,以記錄自己的學習曆程,也為了友善回顧知識;故文章内容較為随意簡練,抱着學習目的來的同學務必轉移他處,以免我誤人子弟~
參考資料
知乎:JavaScript函數式程式設計(一)
知乎:JavaScript函數式程式設計(二)
知乎:JavaScript函數式程式設計(三)
javascript的函數參數是按值傳遞
如下代碼:
let arr = [3,5,7];
let func = function (arrData) {
arrData.splice(0,1);
}
func(arr);
console.log(arr) // [5, 7]
上面的函數改變了原來的引用類型的資料,看似 js 函數時按引用傳遞參數,其實 js 仍然是按值傳遞參數,隻不過不是傳遞引用類型資料本身或拷貝,而是傳遞了引用類型資料的指針拷貝
-
中let arr = [3,5,7]
是指向 [3,5,7] 的指針;arr
-
執行函數,函數中的參數func(arr)
接收arrData
傳遞過來的指針(按值傳遞),此時arr
和arrData
都指向 [3,5,7] 的記憶體位址arr
-
操作數組,直接影響 [3,5,7] 所在記憶體的資料,最終變為 [5,7]arrData.splice(0,1)
-
中console.log(arr)
指向 [3,5,7] 原來所在的位址,此時位址的值為 [5,7]arr
參考材料
js中一個對象當做參數傳遞時候