JavaScript 閉包、定時器

什么是閉包? 有什么作用

  • 因為js只存在局部變量和全局變量,函數(shù)內(nèi)部可以訪問外部變量,而外部卻不能訪問局部變量。閉包就是函數(shù)內(nèi)部在嵌套子函數(shù),這樣子函數(shù)就可以使用父級函數(shù)定義的變量,然后通過return或者定義全局變量的方式把子函數(shù)傳遞出去 ,這樣就可以通過某些方法在外部操作內(nèi)部子函數(shù)。
  • 這樣做的好處可以獨立命名空間不用擔(dān)心變量同名覆蓋的問題
  • 保存私有變量,父級函數(shù)就算執(zhí)行完之后閉包的存在js引擎不會將其內(nèi)部定義的變量銷毀,因為外部需要操作內(nèi)部子函數(shù)的時候,還得需要依賴父級函數(shù)定義的變量。

setTimeout 0 有什么作用

  • 通過設(shè)置延遲時間為0實現(xiàn)js異步,讓該語句后面的語句先執(zhí)行再執(zhí)行本身。因為js是單線程處理任務(wù),把每個任務(wù)放在隊列中,前面的任務(wù)完成之后才會開始后一個,設(shè)置setTimeout 0 讓內(nèi)部的函數(shù)立即插入隊列中但不執(zhí)行,需要等腳本的同步任務(wù)(或者任務(wù)隊列中已有的事件)一結(jié)束就立即執(zhí)行,起到一個盡早執(zhí)行指定任務(wù)的作用。

    console.log(1); 
    setTimeout("console.log(2)", 0); 
    console.log(3); 
    //先輸出1 然后3 最后才是2 
    

本文章著作權(quán)歸沒夢想的咸魚丶和饑人谷所有,轉(zhuǎn)載須說明來源

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1.什么是閉包? 有什么作用? 閉包就是能夠讀取其他函數(shù)內(nèi)部變量的函數(shù)。舉例: 上述代碼中fn4就是閉包,通過fn...
    饑人谷_徐小坤閱讀 396評論 0 0
  • 閉包及其作用 閉包是能夠讀取其他函數(shù)內(nèi)部變量的函數(shù);相當(dāng)于在草原上用柵欄單獨圍一片地只留一個進(jìn)出口;只有通過返回出...
    柯良勇閱讀 732評論 0 0
  • 1.什么是閉包? 有什么作用 閉包是指有權(quán)訪問另一個函數(shù)作用域中的變量的函數(shù),常見到的方式,就是在一個函數(shù)內(nèi)部創(chuàng)建...
    INTERNALENVY閱讀 301評論 0 0
  • 小練習(xí): 題目1: 下面的代碼輸出多少?修改代碼讓 fnArri 輸出 i。使用兩種以上的方法 改寫方法一: 改寫...
    Sketch閱讀 265評論 0 0
  • 1.下面的代碼輸出多少?修改代碼讓 fnArr[i]() 輸出 i。使用 兩種以上的方法 2.封裝一個汽車對象,可...
    liushaung閱讀 219評論 0 2

友情鏈接更多精彩內(nèi)容