js閉包

定義(滿足條件)

  • 一個函數中要嵌套一個內部函數,並且內部函數要訪問外部函數的變量
  • 內部函數要被外部引用

例:

//1
function eat(){
 var food = "bai";
 console.log(food);
}
eat(); // bai     執行完方法後food沒有指向被銷燬
console.log(food); // 沒有可訪問的變量 報錯  

//2
function eat(){
 var food = 'bai';
 return function(){
 console.log(food);
 }
}
var look = eat();
look(); // bai
look(); // bai
//eat()執行完畢 可是look依然被引用所以變量保存了下來
//3
var school = function () {
 var s1 = "張三";
 var s2 = "李四";
 var team = function (project) {
 console.log(s1 + s2 + project);
 }
 return team;
}
var team = school();
team("在工作"); // 張三李四在工作
team("在嗨皮"); // 張三李四在嗨皮
//school()執行完畢 可是team依然被引用所以變量保存了下來

閉包的優點缺點

  • 通過閉包可以讓外部環境訪問得到函數內部的局部變量。
  • 通過閉包可以讓全局變量持續保存下來,不隨着它的上下文環境一起銷燬。(消耗內存)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章