作用域和閉包

變量提升(預(yù)解析)

javascript的函數(shù)作用域是指在函數(shù)內(nèi)聲明的所有變量在函數(shù)體內(nèi)始終是可見的,有意思的是,這意味著變量在聲明之前甚至已經(jīng)可用。JavaScript的這個特性被非正式地稱為聲明提前,即JavaScript函數(shù)里聲明的所有變量(但不涉及賦值)都被"提前"至函數(shù)體的頂部。
eg:將函數(shù)內(nèi)的變量聲明“提前”至函數(shù)頂部,同時變量初始化留在原來的位置:

    var a = 10
    function fn(){
      console.log(a)   //undefined
      a =20
      console.log(a)   //20
    }

閉包

函數(shù)可以通過作用域鏈相互關(guān)聯(lián)起來,函數(shù)體內(nèi)部的變量可以保存在函數(shù)作用域內(nèi)。
為什么要使用B包?
1.因為B包可以訪問到函數(shù)內(nèi)部的變量并且會將這些變量的值一直保存在內(nèi)存中。
2.因為B包引用函數(shù)不會被清除,可能會造成內(nèi)存泄漏的問題,貼別是IE
B包的特性?
1.函數(shù)嵌套函數(shù)
2.函數(shù)內(nèi)部可以引用外部的參數(shù)和變量
3.參數(shù)和變量不會被垃圾機(jī)制回收

    function fn(){
         var a = 0
         function fn1(){
             a++
             console.log(a) 
         }
         fn1()
         fn1()
    }
   fn()
?著作權(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)容

  • 要打敗自己,就要用心的對自己剖析。懂得了自己,才能把自己的偽裝撕下,不斷壓迫自己,讓自己前進(jìn)。一切都愿意只有壓力才...
    jerish閱讀 668評論 0 0
  • 10月12日是第一次作業(yè)的截止日期,我確信自己在拖延,畢竟國慶假期是個非常棒的借口。 注冊簡書有3年,這次作業(yè)卻是...
    小饅頭687閱讀 338評論 2 6
  • 22+10這只是個開始,當(dāng)一切轉(zhuǎn)化為數(shù)字,才會發(fā)現(xiàn)那么多日子已經(jīng)過去。 但愿能重生, 那就重生。 這兩天科室活動,...
    靜靜的軒蔚閱讀 460評論 0 5
  • 你是我的初戀,你親了我,你就要娶我,對我負(fù)責(zé)到底。 Why? Why? Why? 1 昨天看某綜藝節(jié)目看到到一個萌...
    清兒姑娘閱讀 1,202評論 0 2

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