闭包
一.闭包的含义:调用函数不会自动销毁,只会往外溢出。
二.闭包的作用:
实现公有变量
eg:函数累加器
可以做缓存(存储结构)
eg:eater
可以实现封装,属性私有化
eg:Person();
模块化开发,防止污染全局变量
var name = 'wsx';
var T = (function () {
var name = 'wkn';
function G () {
console.log(name);
}
return function () {
G();
}
}());
累加
//打印出0-9,在反过来打印10个10 累加机制
//1.打印0-9
// function test() {
// var arr = [];
// for (var i = 0 ; i < 10 ; i++){
// arr[i] = function() {
// document.write(i);
// }
// }
// return arr;
// }
// //2.打印10个10
// var test1 = test();
// for(var j = 0 ; j < 9 ; ++j ){
// test1[j]();
// }
缓存机制
//缓存机制 // function test() { // var food = 'apple'; // var obj = { // eatFoot : function () { // if (food != ""){ // console.log('I am' + food ); // food = ""; // }else{ // console.log("Thihe is noting"); // } // }, // pushFoot : function (myFood) { // food = myFood; // } // } // return obj; // } // var prepon = test(); // prepon.eatFoot();//I am apple // prepon.eatFoot();//Thihe is noting // prepon.pushFoot("banana"); // prepon.eatFoot();//I am banana
立即执行函数
//打印出10个10,在打印出来0-9 // function test() { // var arr = []; // for (var i = 0 ; i < 10 ; i++ ) { // //立即执行函数 // (function(j) { // arr[j] = function () { // document.write(j); // } // } (i)) // } // return arr; // } // var test1 = test(); // for ( var j = 0 ; j < 10 ; ++j ) { // test1[j](); // }