值類型:字符串(string)、數值(number)、布爾值(boolean)、null、undefinedjavascript
引用類型:對象(Object)、數組(Array)、函數(Function)java
佔用空間固定,保存在棧中(當一個方法執行時,每一個方法都會創建本身的內存棧,在這個方法內定義的變量將會逐個放入這塊棧內存裏,隨着方法的執行結束,這個方法的內存棧也將天然銷燬了。所以,全部在方法中定義的變量都是放在棧內存中的;棧中存儲的是基礎變量以及一些對象的引用變量,基礎變量的值是存儲在棧中,而引用變量存儲在棧中的是指向堆中的數組或者對象的地址,這就是爲什麼修改引用類型總會影響到其餘指向這個地址的引用變量。
保存與複製的是值自己
使用typeof檢測數據的類型
基本類型數據是值類型
佔用空間不固定,保存在堆中(當咱們在程序中建立一個對象時,這個對象將被保存到運行時數據區中,以便反覆利用(由於對象的建立成本一般較大),這個運行時數據區就是堆內存。堆內存中的對象不會隨方法的結束而銷燬,即便方法結束後,這個對象還可能被另外一個引用變量所引用(方法的參數傳遞時很常見),則這個對象依然不會被銷燬,只有當一個對象沒有任何引用變量引用它時,系統的垃圾回收機制纔會在覈實的時候回收它。
保存與複製的是指向對象的一個指針
使用instanceof檢測數據類型
使用new()方法構造出的對象是引用型
// 值類型:Number、string、bollean、undefined var a = 100 var b = a a = 200 console.log(b) // 100 // 引用類型:對象、數組、函數、null(空指針) // 能夠擴展屬性 var a = {age:20} var b = a b.age = 21 console.log(a.age) // 21 typeof undefined // undefined typeof 'abc' // string typeof 123 // number typeof true // boolean // typeof 區分不出來引用類型(除了函數) typeof {} // object typeof [] // object typeof null // object typeof console.log //function