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