首頁  >  文章  >  web前端  >  簡單理解JavaScript閉包

簡單理解JavaScript閉包

高洛峰
高洛峰原創
2016-10-15 16:09:431237瀏覽

很多關於JS的書籍例如《JavaScript權威指南》或《高程》都把閉包解釋的晦澀難懂,萌新們是怎麼也看不懂啊!不過別怕,今天我就用很簡單的方式跟大家講解下到底什麼是閉包。這是一篇面對新手的對於閉包的解釋,沒有晦澀生硬的語句,一看就能明白。如有不妥歡迎指正!
要理解閉包,首先要理解變數的作用域。
JS中變數作用域有兩個:全域變數以及局部變量,顧名思義,全域變數就是在任何位置都可以引用的變量,局部變數就是只能在特定位置才能引用的變量,看下面程式碼。

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

在函數f()內可以存取到函數體外定義的globalScope,而函數體外無法存取函數體內定義的localScope,這就是全域變數與局部變數的差異。
難道在函數體外就永遠訪問不到localScope了嗎?非也,閉包就是為此而生。

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

我們在函數f()外訪問到了局部變數localScope,這裡在函數f()內定義的匿名函數就是一個閉包!

簡單理解JavaScript閉包

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn