JavaScript中的變量類型有哪些?

JavaScript中的變量類型有哪些?

  • 值類型:字符串(string)、數值(number)、布爾值(boolean)、null、undefined

  • 引用類型:對象(Object)、數組(Array)、函數(Function)

值類型和引用類型的區別

值類型:

  • 佔用空間固定,保存在棧中(當一個方法執行時,每個方法都會建立自己的內存棧,在這個方法內定義的變量將會逐個放入這塊棧內存裏,隨着方法的執行結束,這個方法的內存棧也將自然銷燬了。因此,所有在方法中定義的變量都是放在棧內存中的;棧中存儲的是基礎變量以及一些對象的引用變量,基礎變量的值是存儲在棧中,而引用變量存儲在棧中的是指向堆中的數組或者對象的地址,這就是爲何修改引用類型總會影響到其他指向這個地址的引用變量。
  • 保存與複製的是值本身
  • 使用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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章