最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
JavaScript闭包的小问题
时间:2016-08-15 编辑:简简单单 来源:一聚教程网
怎么说,闭包大体也就是作用域的问题。
闭包的一个用途是用于模块化,保护函数体内的私有变量,如:
var foo = function(){
var _num = 1;
var sayHello = function(){
console.log('hello');
};
var getNum = function(){
return _num;
};
return {
getNum : getNum ,
sayHello : sayHello
}
}
var num = foo().getNum();
console.log(num); //1
foo().sayHello(); //hello
模块化的东西不多说,下面说之前一直不解的问题:
var $div = $("div");
for(var i = 0; i < $div.length;i++){ //length = 4
$div[i].onclick = function(){
console.log(i); // 4 4 4 4
}
}
原因在于log的参数i为形参,只有在onclick事件触发时,才将i赋值。
简单修改,通过立即执行函数即可将i进行绑定:
var $div = $("div");
for(var i = 0; i < $div.length;i++){ //length = 4
$div[i].onclick = (function(i){
console.log(i); // 1 2 3 4
}(i));
}
-
上一个: AngularJS作用域详解介绍
-
下一个: jQuery缓存技术的简单探究
相关文章
- 无线网连接提示没有有效的IP配置解决方法 03-08
- javascript实现下雨效果 07-28
- javascript实现圣旨卷轴展开效果(代码分享) 07-20
- JavaScript实现星星等级评价功能 07-14
- javascript实现滑动解锁功能 07-14
- 十大热门的JavaScript框架和库 07-13