1. 程式人生 > >js中值型別和引用型別的區別(無舉例)

js中值型別和引用型別的區別(無舉例)

  1. js中的變數型別有哪些?
    (1)值型別:字串string、數值number、布林值boolean、undefined
    (2)引用型別:物件object、陣列array、函式function

  2. 值型別和引用型別的區別
    (1)值型別:
    1⃣️佔用空間固定,儲存在棧中(當一個方法執行時,每個方法都會建立自己的記憶體棧,在這個方法內定義的變數將會逐個放入這塊棧記憶體裡,隨著方法的執行結束,這個方法的記憶體棧也將自然銷燬了。因此,所有在方法中定義的變數都是放在棧記憶體中的;棧中儲存的是基礎變數以及一些物件的引用變數,基礎變數的值是儲存在棧中,而引用比那裡儲存在棧中的是指向堆中的陣列或者物件的地址,這就是為何修改引用型別總會影響到其他指向這個地址的引用變數。)
    2⃣️儲存和複製的是值本身


    3⃣️使用typeof檢測資料的型別
    4⃣️基本型別資料是值型別
    (2)引用型別:
    1⃣️佔用空間不固定,儲存在堆中(當我們在程式中建立一個物件時,這個物件將被儲存到執行時資料區中,以便反覆利用(因為物件的建立成本通常較大),這個執行時資料區就是堆記憶體。堆記憶體中的物件不會隨著方法的結束而銷燬,即使方法結束後,這個物件還可能被另一個引用變數所引用,則這個物件依然不會被銷燬,只有當一個物件沒有任何引用變數引用它時,系統的垃圾回收機制才會在合適的時候回收它。)
    2⃣️儲存與複製的是執行物件的一個指標
    3⃣️使用instanceof檢測資料型別
    4⃣️使用new()方法構造出的物件是引用型