> 如果有記憶吐司就好了... # 什麼是by reference (傳參考)、by value(傳值) ### by reference(傳址) 當我們宣告一個變數為物件時`let a = {myName: "Jasper"};`,此時a會被存取到記憶體中的一個位置(ex:0*001),當我再宣告一個變數 `let b = a;`,此時b不會再記憶體中建立另一個位置來存放,而是將b的值指向a的記憶體(0*001),所以當a的值改變的時候b也會跟著變動,這種情況稱為 *by reference** ,此型態發生於object、function。  ### by value(傳值) 當我們宣告一個變數為 `let a = 1;`,此時a會在記憶體建立一個位置存取1(ex:0*001)。這時候我在宣告 `let b = a;`,此時b也會在記憶體建立另一個位置(ex:0*002)存取a的值。a與b各自存在不同的記憶體位置,此時當我再將a的值改為10,則b不會跟著變動,這樣的情況稱為 **by value** ,此型態發生於primitive type的變數(number、string、布林、undefined、null)。  參考文獻: * https://codinggirl.timelog.to/a174653905 * https://wcc723.github.io/javascript/2017/12/06/javascript-variables/ * https://pjchender.blogspot.com/2016/03/javascriptby-referenceby-value.html * https://iter01.com/548218.html * https://ithelp.ithome.com.tw/articles/10103799
×
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