js中函式引數值傳遞和引用傳遞
一.函式傳遞值型別:
程式碼例項如下:
[JavaScript] 純文字檢視 複製程式碼function addNum(num){ num+=10; return num; } var num=10; var result=addNum(num); console.log(num); console.log(result);
以上程式碼的彈出值分別為:10和20,下面進行一下分析:
宣告變數num並複製為10,這個是num是一個值型別,當為函式傳遞引數的時候,是將此值複製一份傳遞給函式,所以在函式執行之後,num本身的值並沒有被改變,函式中被改變的值僅僅是一個副本而已。
二.函式傳遞引用型別:
[JavaScript] 純文字檢視 複製程式碼function setName(obj){ obj.name="青島新銳"; } var web=new Object(); web.name="螞蟻部落"; setName(web); console.log(web.name);
以上程式碼的彈出值是:“青島新銳”,下面進行一下分析:
宣告一個物件web,它是一個引用型別,當為函式傳遞引數的時候,是傳遞的web物件的引用,也就是此物件的記憶體地址,所以在函式中修改屬性的物件就是函式外面建立的物件本身。
三.加深理解:
[JavaScript] 純文字檢視 複製程式碼function setName(obj){ obj.name="青島新銳"; obj=new Object(); obj.name="螞蟻部落"; } var web=new Object(); setName(web); console.log(web.name);
以上程式碼的彈出值是:青島新銳,很多人可能會以為將會彈出“螞蟻部落”,下面進行一下簡單的分析:
在函式外面建立一個物件,並將物件的引用賦值給變數web,web中儲存的是物件在記憶體中的儲存地址,當為函式傳遞引數的,就是傳遞的在函式外面建立的物件的地址。在函式中,為外面建立的物件建立一個自定義屬性name並賦值為“青島新銳”,然後又建立一個新的物件,並將新物件的地址賦值給obj,這個時候obj指向的並不是函式外面建立的物件,所以外面物件name屬性不會被改變。
相關文章
- js函式引數值傳遞和引用傳遞簡單介紹JS函式
- Python的函式引數傳遞:傳值?引用?Python函式
- 值傳遞和引用傳遞
- Java中的值傳遞和引用傳遞Java
- 面試官問:Go 中的引數傳遞是值傳遞還是引用傳遞?面試Go
- php函式引用傳遞引數的方法PHP函式
- JS的方法引數傳遞(按值傳遞)JS
- JavaScript的值傳遞和引用傳遞JavaScript
- Java的值傳遞和引用傳遞Java
- js中 函式引數的 傳值/傳引用 問題JS函式
- Java引數傳遞是傳值還是傳引用?Java
- 值傳遞與引用傳遞
- Day30--值傳遞和引用傳遞
- GO中的函式設計時候,引數傳遞選擇傳遞值還是傳遞指標?Go函式指標
- JavaScript函式傳遞引數JavaScript函式
- 函式的引數傳遞函式
- JavaScript函式引數傳遞JavaScript函式
- JS是按值傳遞還是按引用傳遞?JS
- Go語言引數傳遞是傳值?還是傳引用 ?Go
- Go語言引數傳遞是傳值還是傳引用Go
- 快速搞懂值傳遞與引用傳遞
- python中函式的引數傳遞Python函式
- Golang中函式傳參存在引用傳遞嗎?Golang函式
- java方法中只有值傳遞,沒有引用傳遞Java
- 函式作為引數傳遞函式
- 函式引數傳遞及返回函式
- 關於值傳遞和引用傳遞的解釋
- react 外部函式的引用以及onClick傳遞引數React函式
- Python引數傳遞,既不是傳值也不是傳引用Python
- 引數傳遞方式必須是const引用傳遞
- Java - 是值傳遞還是引用傳遞Java
- ES5中的值傳遞/引用傳遞--解釋
- (求教)關於js函式按值、引用傳遞的問題JS函式
- Java 從陣列來看值傳遞和引用傳遞Java陣列
- python函式之引數傳遞Python函式
- go語言引數傳遞到底是傳值還是傳引用Go
- Python 函式中,引數是傳值,還是傳引用?Python函式
- C#程式設計引用型別和值型別 以及引用傳遞和值傳遞C#程式設計型別