在《js高級程序設計》中是這麼描述參數傳遞的:函數
- ECMAScript 中全部函數的參數都是按值傳遞的
我對這句話有所疑惑,疑惑在哪呢?請你們看
《js高級程序設計》是這麼解釋的:
以上代碼中建立一個對象,並將其保存在了變量 person 中。而後,這個變量被傳遞到 setName() 函數中以後就被複制給了 obj。在這個函數內部,
obj 和 person 引用的是同一個對象。換句話說,即便這個變量是按值傳遞的,obj 也會按引用來訪問同一個對象。
what?? 按值傳遞爲何也會訪問同一個對象,那這不就是按照引用傳遞嗎?? 我思考了好久,發現多是我沒搞明白這裏按引用傳遞與按值傳遞的含義
這裏的按引用傳遞指的是直接傳遞堆內存中的數據
咱們知道基本類型的數據是存放在棧內存中的,而引用類型的數據是存放在堆內存中的,定義一個對象實際上是在棧內存中存儲了一個指針,這個指針指向堆內存中該對象的存儲地址。
明白了這個概念這個疑惑就能解答了,固然,這是我我的的理解,若是不對,盡請指教。