在js中,變量按存儲(chǔ)方式來(lái)說(shuō),有兩種類型,一是值類型,二是引用類型。
先說(shuō)值類型,在js中,值類型有Number、String、 Boolean、undefined、null。那么在內(nèi)存中,值類型存儲(chǔ)的就是這些基本數(shù)據(jù)變量的值,如果我們要對(duì)這些變量進(jìn)行復(fù)制,那么我們需要一塊新的內(nèi)存空間來(lái)存放復(fù)制的值。
那引用類型又是什么呢,引用類型在js中有對(duì)象、函數(shù)、數(shù)組,作為引用類型,他們都可以無(wú)限的擴(kuò)展屬性,那么當(dāng)一個(gè)引用類型擴(kuò)展的屬性非常多的時(shí)候,我們進(jìn)行復(fù)制是不是就要拿出一塊相應(yīng)的空間去存放,那占得內(nèi)存就會(huì)非常大了,所以引用類型存放的只是一個(gè)引用也就是一個(gè)指針,指向在堆中真正的數(shù)據(jù)。
在這里舉一個(gè)可能不是很恰當(dāng)?shù)睦樱覀儼逊孔幼鳛閮?nèi)存空間,聲明的變量就是房子里的東西,值類型是什么呢?我看了你這個(gè)房間,我也很想要,于是乎我就新建了一個(gè)房子,然后把其中的東西原封不動(dòng)的復(fù)制一份搬到我的房子里,這就是值類型復(fù)制的特性。
那么引用類型是什么呢,就是我很喜歡你這個(gè)房子,那你就把鑰匙配給我一把,我也可以使用這個(gè)房子,但是我對(duì)這個(gè)房子的使用情況也會(huì)影響到你的使用,我往里面填了一個(gè)電視,那么你用的時(shí)候電視是在里面的了。
關(guān)鍵詞: