本文面向初學者,大神輕噴。

閉包是什么?

初學javascript的人,都會接觸到一個東西叫做閉包,聽起來感覺很高大上的。網(wǎng)上也有各種五花八門的解釋,其實我個人感覺,沒必要用太理論化的觀念來看待閉包。

事實上,你每天都在用閉包,只是你不知道罷了。

比如:

var cheese = '奶酪'; var test = function(){
    alert(cheese);
}

OK,你已經(jīng)寫了一個閉包。

函數(shù)也是一個數(shù)據(jù)類型

變量 cheese 是在全局作用域中的一個變量,當你創(chuàng)建了一個 test 函數(shù),那么,test 和 cheese 就共享一個全局作用域。

你要額外明白的一點是,在js中,函數(shù)和變量本質(zhì)上是一個東西。函數(shù)也是一個數(shù)據(jù)類型。

從上面的定義中也能看出來這一點。你要是不相信的話,我們來看一下咯。

alert(cheese); alert(test);