天天看點

javascript函數式程式設計學習

本系列文章是本人學習相關知識時所積累的筆記,以記錄自己的學習曆程,也為了友善回顧知識;故文章内容較為随意簡練,抱着學習目的來的同學務必轉移他處,以免我誤人子弟~

參考資料

知乎: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]

    arr

    是指向 [3,5,7] 的指針;
  • func(arr)

    執行函數,函數中的參數

    arrData

    接收

    arr

    傳遞過來的指針(按值傳遞),此時

    arrData

    arr

    都指向 [3,5,7] 的記憶體位址
  • arrData.splice(0,1)

    操作數組,直接影響 [3,5,7] 所在記憶體的資料,最終變為 [5,7]
  • console.log(arr)

    arr

    指向 [3,5,7] 原來所在的位址,此時位址的值為 [5,7]

參考材料

js中一個對象當做參數傳遞時候