JavaScript:by referenc(傳參考、傳址)與 by value(傳值)差異
今天來探討 JavaScript 中,by referenc(傳參考)與 by value(傳值)差異。
by value(傳值)
- 宣告 a 變數後,再宣告變數 b 並將 a 值賦予值給變數 b
- 然而要將 a 值賦予值到變數 b 時,會額外開新的記憶體空間
- 因此變數 a 與變數 b 是不同的記憶體空間,彼此沒有關聯
- 所以後續儘管進行
b++;
運算也不會影響到變數 a
1 |
|
by reference(傳參考、傳址)
- 宣告 a 變數後,再宣告變數 b 並將 a 值賦予值給變數 b
- 但因為兩者皆是物件,物件本身有個記憶體空間,因此 a 變數與 b 變數會指向到同一個物件記憶體空間
- 賦予新值給 b.name,此時 a.name 的結果也會被修改
- 原因是因為 a 與 b 變數都指向同一個記憶體空間物件
- 因此不論修改哪個變數裡面的屬性,都是針對同一個記憶體空間修改
- 陣列內的 value 也會跟物件一樣有傳參考特性
1 |
|
參考資料
本站所有文章除特別聲明外,均採用 BY-NC-SA 許可協議。轉載請註明出處!