zoukankan      html  css  js  c++  java
  • JavaScript 闭包

    JS中所有的function都是一个闭包,不过一般来说,嵌套的function所产生的闭包更为强大,也是大部分时候我们所谓的闭包。

    我们可以把闭包理解为定义在一个函数内的函数。

    var lis=document.getElementByTagName("li");
    function test(nodes){
        for(var i=nodes.length-1;i>=0;i--){
          nodes[i].onclick=function(){
            alert(i);
          }
        }
    }
    test(lis);

    当点击一个节点时,按照预期,应该弹出节点的序号,但实际弹出的是-1.

    函数在执行的时候才初始化活动对象,当第一个函数执行时,i的值已经是-1了。使用立即执行的匿名函数,就会生成一个仅对该函数有效的变量 。

    在闭包(这里就是匿名函数)里面定义的函数(这里是指事件处理函数)会「记住」它所处的上下文(这是指匿名函数中所有的变量)环境。

    改正后的代码:

    var lis=document.getElementByTagName("li");
    function test(nodes){
        for(var i=nodes.length-1;i>=0;i--){
         (function(i){
          nodes[i].onclick=function(){
            alert(i);
          }
        }(i))
        }
    }
    test(lis);
  • 相关阅读:
    mysql常用的语句示例
    node的模块机制
    mongodb的一些技术点
    php的权限设置流程
    linux常用命令大全
    通过centos7.2搭建个人博客--------------服务器篇
    详解vuex时光机
    详解位运算符的一些特点
    一位资深程序员大牛给予Java初学者的学习路线建议
    JDBC
  • 原文地址:https://www.cnblogs.com/oygg/p/5435238.html
Copyright © 2011-2022 走看看