js 閉包理解

了解js中的全局變量和局部變量

全局變量屬于 window 對象,局部變量只能用于定義它函數(shù)內(nèi)部。當全局和局部變量名稱相同,它們也是兩個不同的變量,值是互不影響的。

列子:



<!DOCTYPE html>

<html>

<head>

? ? <meta charset='utf-8'>

? ? <meta http-equiv='X-UA-Compatible' content='IE=edge'>

? ? <title>測試</title>

? ? <meta name='viewport' content='width=device-width, initial-scale=1'>

<body>

? ? <p>測試</p>

</body>

<script>

? ? var a=2//全局變量a

? ? function test(){

? ? ? ? var a =1//局部變量a

? ? ? ? console.log(a)

? ? }

? ? test();

? ? function outPutA(){

? ? ? ? console.log(a)

? ? }

? ? outPutA();

</script>

</html>



上面代碼結(jié)果:


當變量聲明時不使用var關(guān)鍵字,那么它就變成了一個全局變量,即便它在函數(shù)內(nèi)定義。上面代碼test()里這樣聲明變量

a=3;

那么控制臺就輸出兩個3,因為先執(zhí)行了test(),全局變量a重新賦值為3;

所以全局變量的作用域是全局性的,即在整個JavaScript程序中,全局變量在每一個函數(shù)內(nèi)都能訪問。

函數(shù)內(nèi)部聲明的變量即局部變量,只能在函數(shù)內(nèi)部起作用,作用域是局部性的;函數(shù)的參數(shù)也是局部性的,只在函數(shù)內(nèi)部起作用。

那么閉包是什么?

閉包是一種保護私有變量的機制,在函數(shù)執(zhí)行時形成私有的作用域,保護里面的私有變量不受外界干擾。

列子:


var add = (function () {

? ? var counter = 0;

? ? return function () {return counter += 1;}

})();

? ? for(var i = 0;i<4;i++){

? ? ? ? console.log(add())

? ? }



控制臺輸出1,2,3,4

假如在add()外部重新給counter賦值,



var add = (function () {

? ? var counter = 0;

? ? return function () {return counter += 1;}

})();

??? var counter =3;

? ? for(var i = 0;i<4;i++){

? ? ? ? console.log(add())

? ? }



控制臺仍然輸出1,2,3,4

所以閉包就將函數(shù)里面的變量保護起來,外部代碼不能訪問到函數(shù)內(nèi)部的私有變量,只能通過add()函數(shù)改變counter的值。

?著作權(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)容

  • 閉包的概念 閉包就是能夠讀取其他函數(shù)內(nèi)部變量的函數(shù)。 一、變量的作用域 要理解閉包,首先必須理解Javascrip...
    遇而記起閱讀 368評論 0 0
  • Lua 5.1 參考手冊 by Roberto Ierusalimschy, Luiz Henrique de F...
    蘇黎九歌閱讀 14,246評論 0 38
  • 文/michaelgbw js作為一個“幾乎統(tǒng)治宇宙”的語言,不光是對于我們web工程師來說,幾乎所有領(lǐng)域的程序員...
    michaelgbw閱讀 568評論 0 5
  • 函數(shù)只定義一次,但可能被執(zhí)行或調(diào)用任意次。JS函數(shù)是參數(shù)化的,函數(shù)的定義會包括一個稱為形參的標識符列表,這些參數(shù)在...
    PySong閱讀 668評論 0 0
  • 資產(chǎn)負債表課堂上我們講了很多,今天我們一起來回顧一下: 三大財報 一、概念 “資產(chǎn)負債表”的作用就是“花錢”和“找...
    雷_dc56閱讀 651評論 0 3

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