最近在寫一些東西,需要用到閉包的一些知識(shí),初聽(tīng)到這個(gè)概念的時(shí)候到網(wǎng)上搜了一些文章,大多數(shù)寫的比較抽象,直到看到我心目中的牛人阮一峰寫的一篇關(guān)于閉包的博客,從而豁然開(kāi)朗,因此本文中也有一部分觀點(diǎn)引用了阮一峰老師的。閉包是JavaScript中比較抽象的一個(gè)概念,很多初學(xué)者都沒(méi)有很好的理解,在此將我所理解的閉包記錄下來(lái)分享給大家,希望能對(duì)各位有所幫助。
1. 變量的作用域
在講閉包之前,首先來(lái)說(shuō)一下JavaScript中變量的作用域問(wèn)題。在JS中變量分為兩種:局部變量和全局變量,與此相對(duì)應(yīng)的兩種變量的作用域分別為局部作用域和全局作用域。在函數(shù)內(nèi)部定義的變量為局部變量,在函數(shù)外部定義的變量稱作全局變量。JS特有的語(yǔ)法規(guī)定全局變量在函數(shù)內(nèi)部和外部都可以使用,但是局部變量只能在在函數(shù)內(nèi)部及其子函數(shù)中使用,我們來(lái)看如下案例:
var num = 18; //全局變量function func(){ var age = 22; //局部變量 console.log(age,num); //22 18} func(); console.log(num,age); //18 age is not defined
網(wǎng)友評(píng)論