最近在寫一些東西,需要用到閉包的一些知識(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)看如下案例:

 

photoshop培訓(xùn),電腦培訓(xùn),電腦維修培訓(xùn),移動(dòng)軟件開(kāi)發(fā)培訓(xùn),網(wǎng)站設(shè)計(jì)培訓(xùn),網(wǎng)站建設(shè)培訓(xùn)

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)論