更新時間:2024-01-30 來源:黑馬程序員 瀏覽量:
在JavaScript中,基本類型和復(fù)雜類型的數(shù)據(jù)都是存儲在內(nèi)存中的不同位置。
1.基本類型(Primitive Types):
(1)基本類型包括數(shù)字(Number)、字符串(String)、布爾值(Boolean)、null、undefined 和 Symbol。
(2)基本類型的值直接存儲在棧內(nèi)存中,棧內(nèi)存是一種簡單的內(nèi)存結(jié)構(gòu),用于存儲簡單的數(shù)據(jù)和引用。
(3)當你創(chuàng)建一個基本類型的變量時,該變量直接存儲變量值,而且它們是按值訪問的,即變量直接包含其數(shù)據(jù)。
var num = 42; // 基本類型變量 var str = "Hello"; // 基本類型變量
2.復(fù)雜類型(Complex Types):
(1)復(fù)雜類型包括對象(Object)和數(shù)組(Array),還有函數(shù)(Function)等。
(2)復(fù)雜類型的值存儲在堆內(nèi)存中。堆內(nèi)存是一種相對較大的、靈活的內(nèi)存池,用于存儲對象和復(fù)雜數(shù)據(jù)結(jié)構(gòu)。
(3)復(fù)雜類型的變量實際上是存儲在棧內(nèi)存中的一個引用,該引用指向堆內(nèi)存中實際的數(shù)據(jù)。
var obj = { key: "value" }; // 復(fù)雜類型變量,存儲在堆內(nèi)存中 var arr = [1, 2, 3]; // 復(fù)雜類型變量,存儲在堆內(nèi)存中
所以,基本類型是直接存儲在棧內(nèi)存中,而復(fù)雜類型是在棧內(nèi)存中存儲一個引用,實際數(shù)據(jù)存儲在堆內(nèi)存中。這種區(qū)別在涉及到賦值、傳遞參數(shù)和比較時會產(chǎn)生一些不同的行為。