簡(jiǎn)單理解JavaScript閉包

很多關(guān)于JS的書(shū)籍例如《JavaScript權(quán)威指南》或者《高程》都把閉包解釋的晦澀難懂,萌新們是怎么也看不懂??!不過(guò)別怕,今天我就用很簡(jiǎn)單的方式給大家講解下到底什么是閉包。這是一篇面對(duì)新手的對(duì)于閉包的解釋?zhuān)瑳](méi)有晦澀生硬的語(yǔ)句,一看就能明白。如有不妥歡迎指正!
要理解閉包,首先要理解變量的作用域
JS中變量作用域有兩個(gè):全局變量以及局部變量,顧名思義,全局變量就是在任何位置都可以引用的變量,局部變量就是只能在特定位置才能引用的變量,看下面代碼。

var globalScope="global scope";
function f(){
    var localScope="local scope";
    console.log(globalScope);//global scope
}
console.log(localScope);//undefined

在函數(shù)f()內(nèi)可以訪(fǎng)問(wèn)到函數(shù)體外定義的globalScope,而在函數(shù)體外不能訪(fǎng)問(wèn)到函數(shù)體內(nèi)定義的localScope,這就是全局變量與局部變量的區(qū)別。
難道在函數(shù)體外就永遠(yuǎn)訪(fǎng)問(wèn)不到localScope了嗎?非也,閉包就是為此而生。

function f(){
    var localScope="local scope";
    return function(){
        console.log(localScope);
    }
}
f()();//local scope

我們?cè)诤瘮?shù)f()外訪(fǎng)問(wèn)到了局部變量localScope,這里在函數(shù)f()內(nèi)定義的匿名函數(shù)就是一個(gè)閉包!

這里兩個(gè)圓括號(hào)是什么意思呢?我們可以簡(jiǎn)單理解成執(zhí)行兩次f(),執(zhí)行一次得到function(){console.log(localScope);},再執(zhí)行一次相當(dāng)于執(zhí)行這個(gè)匿名函數(shù)。

好了,對(duì)閉包的簡(jiǎn)單理解就是這么多,謝謝閱讀!
原創(chuàng)文章,轉(zhuǎn)載請(qǐng)注明出處!

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

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

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