# [學習筆記] Javascript 傳值&傳參考 ### :small_blue_diamond: 傳值&傳參考 在程式設計中,「傳值(**pass by value**)」和「傳參考(**pass by reference**)」是描述變數在函數調用時如何傳遞的兩種不同方式。 #### 1. 傳值(pass by value): 當使用傳值的方式傳遞變數時,實際上是將變數的值複製一份,並將這份複製的值傳遞給函數。 在函數內部對該參數進行修改不會影響到原始變數。 ```javascript! function changeValue(value) { value = 10; } let num = 5; changeValue(num); console.log(num); // 結果: 5 在這個例子中,num 變數被傳值傳遞給 changeValue 函數。 儘管在函數內部將 value 設置為 10,但這不會影響到原始的 num 變數,因為它們是兩個獨立的拷貝。 ``` :::warning **傳值 (pass by value)** 是將變數的值複製一份傳遞給函數,對該參數的修改不會影響到原始變數。 ::: #### 2. 傳址/傳參考(pass by reference): 當使用傳參考的方式傳遞變數時,實際上是將變數的引用(記憶體地址)傳遞給函數。 這意味著在函數內部對該參數的修改會影響到原始變數。 ```javascript! function changeArray(arr) { arr.push(4); } let numbers = [1, 2, 3]; changeArray(numbers); console.log(numbers); // 結果: [1, 2, 3, 4] 在這個例子中,numbers 陣列被傳參考傳遞給 changeArray 函數。 在函數內部對 arr 進行修改,添加了 4,這也同時改變了原始的 numbers 陣列。 需要注意的是,JavaScript 中的物件(包括陣列和物件字面量)傳遞的方式是傳參考,而基本數據類型(例如數字、字串、布林值)則是傳值。 ``` :::warning **傳址/傳參考 (pass by reference)** 是將變數的引用(記憶體地址)傳遞給函數,對該參數的修改會影響到原始變數。 :::
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up