# 從 Object 的等號真正的理解變數儲存模型 > 此篇章為上完 [JavaScript 全攻略:克服 JS 的奇怪部分](https://www.udemy.com/course/javascriptjs/) 和看完 [從博物館寄物櫃理解變數儲存模型](https://hulitw.medium.com/variable-and-frontdesk-a53a0440af3c) 後經過個人領悟所整理的筆記,若有謬誤請不吝告知,非常感謝! **當你想存取的變數是「純值」 Primitive values (數字、字串等等)的時候,變數裡面存的內容就真的是那個值。 但如果你想存物件的時候,變數裡面存的內容其實是記憶體位址。** ``` js let a = [1, 2, 3] let b = [1, 2, 3] console.log(a === b) // false let c = 123 let d = 123 console.log(c === d) // true let obj1 = {a: 1} let obj2 = {a: 1} console.log(obj1 === obj2) // false ``` a 跟 b 看起來長的一樣卻不相等是因為變數存取物件(包含函數和陣列)**內容**的方式是存取**記憶體位置**,a 與 b 指向不同記憶體位置,所以不相等,obj1 和 obj2 同理。然而,c 和 d 存取的內容是純值(這邊是數值),內容就是值本身,所以 `c === d` 的結果為 `true`,儘管它們的的記憶體位址不同。