- 什么是「閉包」。
- 「閉包」的作用是什么。
在一個立即執(zhí)行函數(shù)當中:
var local = "aaaa";
function foo() {
console.log(local)
}
首先,假設(shè)以上幾行代碼運行在立即執(zhí)行函數(shù)當中,那么這就是一個閉包,那么我們可以去定義:
「函數(shù)」和「函數(shù)內(nèi)部能訪問到的變量」(也叫環(huán)境)的總和,就是一個閉包。
也許你會說閉包是需要函數(shù)套函數(shù)的
function foo() {
var local = 1
function bar() {
local++
return local
}
return bar
}
var func = foo()
func()
- 套函數(shù)是因為需要局部變量
- return bar是為了使用bar,如果把return bar換成window.bar = bar也可以,只要讓外面能夠訪問的到就行。
閉包的作用
閉包常常用來間接訪問一個變量, 換句話說就是隱藏一個變量。