
理解闭包,函数调用时能够读取到其生成时候的环境变量,例如
var a =1;
var b=function () {
var a=2;
return function () {
console.log(a);
}
}
b()();//打印出2
当函数生成时 其作用域里 a=2 ;调用时继续读取其生成时的作用域;
闭包的使用例子
<html>
<body>
<div>1</div>
<div>2</div>
<div>3</div>
<div>4</div>
<div>5</div>
<script>
var divs = document.getElementsByTagName( 'div' );
for ( var i = 0, len = divs.length; i < len; i++ ){
divs[ i ].onclick = function(){
alert ( i );
}
};
</script>
</body>
</html>
>此时你点击任何一个div打印的都是5用闭包的解决方法
var divs = document.getElementsByTagName( 'div' );
for ( var i = 0, len = divs.length; i < len; i++ ){
(function (i) {
divs[i].onclick = function(){
alert (i);
}
}(i))
}
};
更通俗点就是这样
var divs = document.getElementsByTagName( ‘div’ );
for ( var i = 0, len = divs.length; i < len; i++ ){
(function () {
var b=i
divs[b].onclick = function(){
alert (b);
}
}())
}
};
``




近期评论