iT邦幫忙

0

為了轉生而點技能-javascript,day2(雜記-記憶體的回收機制-Not Defined VS undefined

Not Defined VS undefined

  1. undefined:
    https://ithelp.ithome.com.tw/upload/images/20211120/20143762i8AJ2Frthz.jpg

    在創造階段只有變數在記憶體裡,而未賦予值,所以出現undefined的結果。

  2. Not Defined
    https://ithelp.ithome.com.tw/upload/images/20211120/20143762ev4AgaL2wL.jpg

    記憶體連變數都沒有就會出現Not Defined。


記憶體的回收機制(Garbage collection)

本段是節錄https://www.itread01.com/ 的「中高階前端必須瞭解的」JS中的記憶體管理,並加上部分自己的理解而成,如有錯誤,仍請大大鞭策!!

定義:就是找出那些不再繼續使用的值,然後釋放其佔用的記憶體。

區域性變數: 就是不再需要使用的變數也就是生命週期結束的變數,區域性變數只在函式的執行過程中存在,當函式執行結束,沒有其他引用(閉包),那麼該變數會被標記回收。

function getData() {
  var demoData = [];
  for (var i = 0; i < 1000; i++) {
    demoData.push(randomString(5000))
  }
  console.log(demoData); 
}
getData()

var demoData在函式function getData裡面,屬於區域性變數;函式則依照記憶體堆疊先進後回收,後進先回收。


全域性變數:生命週期直至瀏覽器解除安裝頁面才會結束,也就是說全域性變數不會被當成垃圾回收。

        var demoData = [];
        function getData() {
            for (let i = 0; i < 1000; i++) {
                demoData.push(randomString(5000))
            }
        }
        getData()
        console.log(demoData)

var demoData此時就是全域性變數,而且是放在記憶體的全域執行環境區。


圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言