變量作用域
變量根據(jù)作用域的不同分為兩種:全局變量和局部變量????????
1.函數(shù)內(nèi)部可以使用全局變量????????
2.函數(shù)外部不可以使用局部變量???????
3.當(dāng)函數(shù)執(zhí)行完畢钓丰,本作用域內(nèi)的局部變量會銷毀?
從外部讀取函數(shù)內(nèi)部的局部變量
function fun1(){
? ? var num = 1;
? ? function fun2(){
? ? ? ? alert(num);
????}
? ? return fun2;
}
var f = fun1();
f();
在上面的代碼中屁桑,函數(shù)fun2被包括在函數(shù)fun1內(nèi)部,這時fun1內(nèi)部的所有局部變量疙描,對fun2都是可見的。但是反過來就不行血公,fun2內(nèi)部的局部變量玫鸟,對fun1就是不可見的。
閉包概念
閉包就是能夠讀取其他函數(shù)內(nèi)部變量的函數(shù)脆炎。
上述代碼中fun1就是一個閉包梅猿,簡單說就是變量所在的函數(shù)氓辣。
閉包的用途
1.讀取函數(shù)內(nèi)部的變量
2.讓變量始終保持在內(nèi)存中秒裕,不會在函數(shù)執(zhí)行后被自動清除