`
zzzzzz5530041
  • 浏览: 34343 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

js闭包和循环

阅读更多

 

function box(){
  var arr = [];
  for(var i=0;i<5;i++){
    arr[i]=function(){
      return i;
    }
  }
  return arr;
}

var b = box();
console.log(b.length);


for(var i=0;i<b.length;i++){
  console.log(b[i]())

}

 上面的代码会打印出5个5

因为b[i]()调用的是匿名函数,然而匿名函数并没有自我执行,所以等到调用的时候,box()已经执行完毕。。。。

 

下面改一下:

function box(){
  var arr = [];
  for(var i=0;i<5;i++){
    arr[i]=(
      function(num){
        console.log("ccc="+num)
        return num;
      }
    )(i)
  }
  return arr;
}

var b = box();
console.log(b.length);


for(var i=0;i<b.length;i++){
  console.log(b[i])

}

 执行结果:

num=0
num=1
num=2
num=3
num=4
5
0
1
2
3
4

 修改后让匿名函数自我执行,导致最后b[i]返回的是数组而不再是函数了 

 

 

分享到:
评论

相关推荐

    浅谈JS闭包中的循环绑定处理程序

    这正是JavaScript闭包的强大之处,它允许我们创建具有持久状态的函数,即使这些函数是在其他函数的上下文中定义的。 理解闭包在循环绑定处理程序中的应用是JavaScript开发中的重要概念,它可以帮助我们避免一些常见...

    【JavaScript源代码】js闭包和垃圾回收机制示例详解.docx

    ### JavaScript闭包与垃圾回收机制详解 #### 一、闭包 ##### 1.1 闭包是什么? 闭包(Closure)是JavaScript中一个非常重要的概念,它涉及到函数及其相关的词法作用域。简单来说,闭包就是能够访问其自身作用域...

    基于javascript 闭包基础分享

    文章中提到了两个例子:第一个例子中,通过一个循环来创建带有闭包的函数数组,但是由于JavaScript变量作用域和循环的作用,所有函数最终都只访问到了循环的最终值。第二个例子通过立即执行函数表达式(IIFE)来解决...

    [深入理解JS闭包]帮助你快速学习js的闭包,简单高效的文档资源

    2. 避免循环引用:在使用闭包时,注意不要在闭包和全局对象之间形成循环引用,否则会导致内存无法释放。 总结,JavaScript 闭包是理解和掌握 JavaScript 高级编程的关键之一。它提供了访问和操作外部作用域的能力,...

    浅谈js 闭包引起的内存泄露问题

    在JavaScript编程中,闭包是一个非常重要的概念,它的特性使得函数可以访问到外部函数作用域中的变量。然而,闭包如果使用不当,非常容易引起...通过以上措施,可以最大限度地减少JavaScript闭包所带来的内存泄漏问题。

    浅谈JavaScript for循环 闭包_.docx

    本文将对JavaScript for循环和闭包进行浅谈,并提供六种解决方案来解决for循环中的闭包问题。 首先,让我们来看一个例子。我们有一个HTML文件,其中包含五个段落,每个段落都是一个p元素。我们想实现的是,每当点击...

    Javascript闭包实例详解

    JavaScript中的闭包是一种重要的编程概念,它涉及到函数、作用域和变量持久化。闭包本质上是函数能够记住并访问其词法作用域内的变量,即使该函数已经执行完毕且其外部作用域不再存在。这种特性使得闭包成为...

    javascript闭包高级教程

    ### JavaScript闭包高级教程 #### 简介 在JavaScript编程中,“闭包”是一个非常重要的概念,尤其对于希望深入理解和高效使用JavaScript的开发者来说。简单地说,闭包是一种能够记住并访问其创建时周围环境的函数...

    JavaScript闭包的定义和理解,含代码示例

    ### JavaScript闭包详解 #### 一、闭包的定义与概念 闭包是JavaScript中一个非常重要的概念,它涉及到函数作用域以及变量的作用域链。简单来说,闭包就是一个能够访问其外部作用域中变量的函数。具体而言,当一个...

    JavaScript闭包(closure).pdf

    理解并掌握JavaScript闭包是成为专业前端开发者的关键一步。在实际开发中,合理利用闭包可以提高代码的复用性和可维护性,同时也能避免一些常见的编程陷阱。通过深入学习和实践,可以更好地运用闭包这一强大的工具来...

    JavaScript 匿名函数和闭包介绍

    在讨论JavaScript编程语言时,匿名函数和闭包是两个重要的概念,它们在函数式编程和模块化代码设计中扮演着核心角色。匿名函数是没有具体名称的函数,它们可以是独立的,也可以是表达式的一部分,通常用于定义临时...

    JavaScript闭包函数访问外部变量的方法

    总结来说,JavaScript闭包函数访问外部变量的主要方法包括直接引用和通过匿名函数捕获变量。直接引用时需要注意闭包中变量的生命周期问题,而通过匿名函数捕获变量可以有效解决这一问题,使得每个闭包都能拥有外部...

    JS中的闭包理解。。。。。。。。

    JavaScript中的闭包是一种强大的特性,它允许函数访问和操作其外部作用域的变量,即使在其外部函数已经执行完毕后。这种现象的发生是因为JavaScript中的函数在定义时就形成了一个词法环境,这个环境包含了对外部作用...

    javascript闭包传参和事件的循环绑定示例探讨

    JavaScript中的闭包是一种强大的特性,它允许函数访问和操作其外部作用域的变量,即使在其外部作用域已经结束之后。在这个示例中,问题在于事件处理函数引用了外部的`i`变量,而不是创建自己的局部副本。这导致了在...

    JavaScript闭包

    JavaScript闭包是编程语言中的一个核心概念,...总之,JavaScript闭包是实现复杂功能的关键工具,理解和掌握闭包对于提高编程效率和代码质量具有重要意义。在实际开发中,灵活运用闭包可以写出更加高效、优雅的代码。

    javascript闭包

    ### JavaScript闭包详解 #### 一、闭包概念与工作机制 **闭包**是JavaScript中最强大的特性之一,它使得函数能够记住并访问其定义时所在的作用域中的变量。要理解和运用闭包,首先需要理解作用域、作用域链以及...

    JS闭包可被利用的常见场景小结

    这种特性让闭包成为JavaScript编程中非常强大和灵活的工具。本文将探讨闭包在JavaScript编程中可被利用的几个常见场景。 ### 闭包概念简述 闭包是函数以及声明该函数的词法环境的组合。当函数在其被定义的作用域...

Global site tag (gtag.js) - Google Analytics