(1)值類型:數(shù)值、布爾值、null、undefined。
(2)引用類型:對象、數(shù)組、函數(shù)。
四、如何理解值類型和引用類型及舉例
我們可以用“連鎖店”和“連鎖店鑰匙”來理解,不知道以下比喻合不合適,-。
(1)值類型理解:變量的交換等于在一個(gè)新的地方按照連鎖店的規(guī)范標(biāo)準(zhǔn)(統(tǒng)一店面理解為相同的變量內(nèi)容)新開一個(gè)分店,這樣新開的店與其它舊店互不相關(guān)、各自運(yùn)營。
function chainStore()
{
var store1='Nike China';
var store2=store1;
store1='Nike U.S.A.';
alert(store2); //Nike China}
chainStore();
//把一個(gè)值類型(也可以叫基本類型)store2傳遞給另一個(gè)變量(賦值)時(shí),其實(shí)是分配了一塊新的內(nèi)存空間,因此改變store1的值對store2沒有任何影響,因?yàn)樗幌褚妙愋停兞康慕粨Q其實(shí)是交換了指像同一個(gè)內(nèi)容的地址。
(2)引用類型理解:變量的交換等于把現(xiàn)有一間店的鑰匙(變量引用地址)復(fù)制一把給了另外一個(gè)老板,此時(shí)兩個(gè)老板同時(shí)管理一間店,兩個(gè)老板的行為都有可能對一間店的運(yùn)營造成影響。
function chainStore()
{
var store1=['Nike China'];
var store2=store1;
alert(store2[0]); //Nike China
store1[0]='Nike U.S.A.';
alert(store2[0]); //Nike U.S.A.}
chainStore();
//在上面的代碼中,store2只進(jìn)行了一次賦值,理論上它的值已定,但后面通過改寫store1的值,發(fā)現(xiàn)store2的值也發(fā)生了改變,這正是引用類型的特征,也是我們要注意的地方。