• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
沙漠You鱼
博客园    首页    新随笔    联系   管理    订阅  订阅
js闭包绑定元素

闭包,官方对闭包的解释是:一个拥有许多变量和绑定了这些变量的环境的表达式(通常是一个函数),因而这些变量也是该表达式的一部分。闭包的特点:   1. 作为一个函数变量的一个引用,当函数返回时,其处于激活状态。   2. 一个闭包就是当一个函数返回时,一个没有释放资源的栈区。   

简单的说,Javascript允许使用内部函数---即函数定义和函数表达式位于另一个函数的函数体内。而且,这些内部函数可以访问它们所在的外部函数中声明的所有局部变量、参数和声明的其他内部函数。当其中一个这样的内部函数在包含它们的外部函数之外被调用时,就会形成闭包。

 

常见的陷阱:
function createFunctions(){
  var result = [];
  for (var i=0; i < 10; i++){
    result[i] = function(){
      return i;
    };
  }
  return result;
}
var funcs = createFunctions();
for (var i=0; i < funcs.length; i++){
  console.log(funcs[i]());
}
 
开始以为输出的是0~9,其实界都是10个10,以为他是等for循环完之后才会做赋值,而不是每循环一次就

实例:
循环绑定元素:
方法一:
<div class="button">1</div>
<div class="button">2</div>
<div class="button">3</div>
<div class="button">4</div>
<script type="text/javascript">
var div = document.getElementsByTagName('div')
for( var i=0;i<div.length;i++) {
(function (i) {
console.log(div[i].innerHTML);
div[i].onclick=function () {
alert(div[i].innerHTML)
}
})(i);
}
</script>
这是一个简单的闭包,它会循环绑定<div>元素,点击哪个<div>,就会弹出它<div>所包含的内容

待续...


posted on 2017-03-15 16:24  沙漠You鱼  阅读(385)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3