1.如何正确使用闭包
1.常用闭包
var asd =(function(){ var value = 0 //私有变量放入内存 return function(){ //biubiubiu 发射火箭 } })(); asd();
2.一个引用引发的闭包问题
var asdf = function(){ var value = 0; return function(){ //火箭升空 } } var f = asdf(); //作为一个函数的引用引发闭包的问题
//这样不是一个闭包
var asdf = function(){ var value = 0; return function(){ //guang 爆炸了 } } //作为一个函数的引用 asdf()(); asdf()(); asdf()();
3.对象
var asdf = { a :0, call:function(){ this.a++; console.log(this.a); } } asdf.call(); //输出1 asdf.call(); //输出2 asdf.call(); //输出3
4.注意this指向问题
错误写法:全都变成undefined
var asdf = { a :0, call:function(){ return function(){ this.a++; console.log(this.a); } } } asdf.call()(); //输出1 asdf.call()(); //输出2 asdf.call()(); //输出3 正确写法 var asdf = { a :0, call:function(){ that = this; return function(){ that.a++; console.log(that.a); } } } asdf.call()(); //输出1 asdf.call()(); //输出2 asdf.call()(); //输出3
5.基于事件驱动引发的闭包
for(var i=0;i<arguments.length;i++){ asdf.on某一个事件=function(){ //里面也是一个闭包 } }
时间: 2024-10-08 04:22:51