javascript函式引數引用型別傳遞其實也是一個複製過程
在函式進行值型別引數傳遞的時候,引數會進行一個拷貝,這一點毋庸置疑,看如下程式碼:
[JavaScript] 純文字檢視 複製程式碼var a=1; function func(num){ num=num+1; console.log(num) } func(a); console.log(a);
上面的程式碼的輸出值分別是2和1。值型別資料傳遞的時候,是做了一份拷貝,也就是說會在棧記憶體中重新開闢一個區域儲存拷貝的資料,於是函式外宣告的變數a和傳遞到函式內的資料已經完全互補相關。下面再看一下引用傳遞的程式碼:
[JavaScript] 純文字檢視 複製程式碼var obj={ webName:"螞蟻部落", url:"softwhy.com" } function func(obj){ obj.address="青島市南區"; } func(obj); console.log(obj.address);
上面的程式碼典型的引用傳遞,給函式傳遞的引數是物件的引用,也可以說是物件在堆中的儲存地址。不過在傳遞引數的這個過程也是一個複製過程,會對儲存在棧中的儲存物件引用的變數進行一個拷貝,也就是傳遞到函式中的也是一個全新的資料,只是這個資料指向同一堆中的記憶體地址而已。
相關文章
- JavaScript函式傳遞引數JavaScript函式
- JavaScript函式引數傳遞JavaScript函式
- js中函式引數值傳遞和引用傳遞JS函式
- php函式引用傳遞引數的方法PHP函式
- Python的函式引數傳遞:傳值?引用?Python函式
- javascript 函式引用型別和簡單型別傳參JavaScript函式型別
- js函式引數值傳遞和引用傳遞簡單介紹JS函式
- JavaScript 事件處理函式傳遞引數JavaScript事件函式
- react 外部函式的引用以及onClick傳遞引數React函式
- JavaScript引數傳遞中值和引用的一種理解JavaScript
- JavaScript為事件處理函式傳遞引數JavaScript事件函式
- 函式的引數傳遞函式
- javascript如何給事件處理函式傳遞引數JavaScript事件函式
- 函式作為引數傳遞函式
- 函式引數傳遞及返回函式
- 函式引數 引數定義函式型別函式型別
- TypeScript魔法堂:函式型別宣告其實很複雜TypeScript函式型別
- Hellow C# unity學習記錄(7)值型別引用型別以及引數傳遞C#Unity型別
- python函式之引數傳遞Python函式
- C#程式設計引用型別和值型別 以及引用傳遞和值傳遞C#程式設計型別
- iOS之@selector的函式傳遞多個引數iOS函式
- [思] 當需要傳遞多個不定引數時,該如何設計 JavaScript 函式?JavaScript函式
- python中函式的引數傳遞Python函式
- onclick事件處理函式傳遞引數事件函式
- String型別函式傳遞問題型別函式
- 引數傳遞方式必須是const引用傳遞
- ABAP 方法呼叫的引數傳遞裡,透過引用傳遞的方式,能修改原始引數值嗎?
- js中 函式引數的 傳值/傳引用 問題JS函式
- Java引數傳遞是傳值還是傳引用?Java
- arguments物件獲取給函式傳遞的實際引數物件函式
- Python語法—函式及引數傳遞Python函式
- 函式名作為引數傳遞 與 回撥函式函式
- Golang中函式傳參存在引用傳遞嗎?Golang函式
- Python 函式中,引數是傳值,還是傳引用?Python函式
- Python 序列型別以及函式引數型別Python型別函式
- JavaScript的值傳遞和引用傳遞JavaScript
- Python函式引數傳遞以及變數作用域Python函式變數
- jdbctemplate呼叫儲存過程傳遞陣列引數JDBC儲存過程陣列