詳解

傳值參考V.S.傳址參考

差異

Tommy

今天內容純屬個人理解如果有誤請不吝指正

先科普一下計概

(計算機概論)

電腦五大單元

輸入,輸出,控制,記憶,運算

CPU和記憶體的關係?

CPU定址

舉例

我有兩隻手,每隻手可以放左右兩邊,共用幾種排列組合?

4種

左左,左右,右左,右右

所以

2位元的CPU可以定址4Byte的記憶體空間

依此類推

32位元的CPU可以定址4GB(2的32次方)

64位元的CPU可以定址16EB(2的64次方)

那麼

難道16位元的CPU定址只有64K嗎(2的16次方)?

位元 !== 定址線

286電腦是16位元但是有24條定址線最大16MB

從32位元以上剛好位元數等於定址線數量

記憶體

RAM

Random Access Memory

隨機 存取 記憶

記憶體位址

資料在記憶體內

X 是 7, Y 是 1000

兩個不一樣的數字為什麼卻佔用一樣的記憶體大小

IEEE 754為例

在JavaScript中每一個數字固定為 64 bit 也就是 8 Byte

參數傳遞

傳值策略

傳值v.s.傳址

傳值

複製值到新的記憶體位置

傳址

傳遞記憶體位置到新的變數上

大家有沒有想過一個問題

參考

把新變數的值設為null

會發生什麼事情?

參考

把新變數的值設為null

會發生什麼事情?

讓我用C#來試試看

JavaScript卻不是這樣

有發現嗎?

因為是共享參考

Q & A

傳值vs傳址

By Yi-Tai Lin

傳值vs傳址

  • 505