1、基本類型
基本的數據類型有:undefined,boolean,number,string,null。 基本類型存放在棧區,訪問是按值訪問的,就是說你可以操作保存在變量中的實際的值。

當基本類型的數據賦值時,賦得是實際的值,a和b是沒有關聯關系的,b由a復制得到,相互獨立。(字面量的才是基本類型)


2、引用類型(對象)引用對象存放的方式是:在棧中存放對象變量標示和該對象在堆中的存放地址,在堆中存放數據。即名稱和地址
對象使用的是引用賦值。當我們把一個對象賦值給一個新的變量時,賦的其實是該對象的在堆中的地址,而不是堆中的數據。也就是兩個對象指向的是同一個存儲空間,無論哪個對象發生改變,其實都是改變的存儲空間的內容,因此,兩個對象是聯動的。


function test(x){ x.push(4); x=[4,5,6]; //x重新被賦值,開辟了一塊新空間與原空間不同 x.push(7); //操作的是新空間的數據 console.log(x);// [4,5,6,7] } var a=[1,2,3]; test(a); // [4,5,6,7] /* 步驟: 1 定義數組[1,2,3]並賦值給a,a指向該數1組 2、調用函數執行的操作過程是 1)向原數組插入數字4,原數組變成[1,2,3,4] 2)定義新數組並賦值給a,此時變量指向了新數組,原數組[1,2,3,4]不變 3)向新數組中插入7,改變了新數組 4)執行console.log操作,顯示的是這個最新的數組,即[4,5,6,7] 3、函數外執行console.log操作。由於函數中,只有第一步操作改變了原數組,后續操作改變的是新賦值的數組[4,5,6]
(新賦值之后,變量a指向了該新數組,所有后續操作,都是針對的新數組),所以該步操作的結果顯示的是[1,2,3,4]。 */
