簡體   English   中英

將原始類型與復合類型分配給變量

[英]Assigning Primitive-type vs Composite-type to a Variable

當您為JavaScript (或與此相關的任何語言)中的變量分配數字,字符串或布爾值等原始類型時,它會在內存中打開一個插槽,將其放入並在其上貼上標簽以供引用以后,對嗎?

var a = 1;
var b = 'foobar';
var c = false;
var d;

// What our memory would happen to look like:
var_a => 0x00 [1         ]
var_b => 0x01 ["foobar"  ]
var_c => 0x02 [false     ]
var_d => 0x03 [undefined ]

現在這是我的問題,數組,函數或對象等復合類型如何存儲在內存中? 我聽說對象是在內存中某個地方創建的,並且變量僅包含該對象的引用地址。 那怎么可能? 從上面鍵入的內存表來看,似乎內存表只能包含一個值。

內存中是否有用於復合類型的特殊插槽? 數組和函數的存儲方式是否與對象相同(例如,通過引用)

對象在內存中的某個位置創建,並且變量僅包含該對象的引用地址。

是。

那怎么可能? 從上面鍵入的內存表來看,似乎內存表只能包含一個值。

參考地址(稱為“指針”) 單個值。

內存中是否有用於復合類型的特殊插槽?

是。 組合,也稱為“結構”,可以包含多個值(但它們的取值固定),例如在描述單個鏈接時,例如“名稱的字符串,下一個屬性的引用和值的字段”作為鏈接列表的對象。 高級JavaScript對象存儲為連接在一起以表示數據的大量不同結構。

數組和函數的存儲方式是否與對象相同(例如,通過引用)?

是。 但是,它們的數據結構不同,它們針對不同的事物進行了優化。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM