1.JavaScript中的變量類型有哪些?
(1)值類型:字符串(string)、數值(number)、布爾值(boolean)、null、undefined
(2)引用類型:對象(Object)、數組(Array)、函數(Function)
2.值類型和引用類型的區別
(1)值類型:1、占用空間固定,保存在棧中(當一個方法執行時,每個方法都會建立自己的內存棧,在這個方法內定義的變量將會逐個放入這塊棧內存里,隨着方法的執行結束,這個方法的內存棧也將自然銷毀了。因此,所有在方法中定義的變量都是放在棧內存中的;棧中存儲的是基礎變量以及一些對象的引用變量,基礎變量的值是存儲在棧中
,而引用變量存儲在棧中的是指向堆中的數組或者對象的地址
,這就是為何修改引用類型總會影響到其他指向這個地址的引用變量。)
2、保存與復制的是值本身
3、使用typeof檢測數據的類型
4、基本類型數據是值類型
(2)引用類型:1、占用空間不固定,保存在堆中(當我們在程序中創建一個對象時,這個對象將被保存到運行時數據區中,以便反復利用(因為對象的創建成本通常較大),這個運行時數據區就是堆內存。堆內存中的對象不會隨方法的結束而銷毀,即使方法結束后,這個對象還可能被另一個引用變量所引用(方法的參數傳遞時很常見),則這個對象依然不會被銷毀
,只有當一個對象沒有任何引用變量引用它時,系統的垃圾回收機制才會在核實的時候回收它。)
2、保存與復制的是指向對象的一個指針
3、使用instanceof檢測數據類型
4、使用new()方法構造出的對象是引用型