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

      闭包意味着内层的函数可以引用存在于包绕它的函数的变量,即使外层的函数的执行已经终止。这一特殊的论题可能是非常强大又非常复杂的。

      闭包还能解决另一个常见的JavaScript编码方面的问题。JavaScript新手趋向于在全局作用域里放置许多变量。这一般被认为是不好的习惯,因为那些变量可能悄悄地影响其它的库,导致令人迷惑的问题的产生。使用一个自执行的、匿名的函数,你可以从根本上隐藏所有的通常的全局变量,使它们对其它代码不可见。

     1 //创建一个用作包装的匿名函数
     2 (function(){
     3 //这个变量通常情况下应该是全局的
     4 var msg = "Thanks for visiting!";
     5 //为全局对象绑定新的函数
     6 window.onunload = function(){
     7 //使用了“隐藏”的变量
     8 alert( msg );
     9 };
    10 //关闭匿名函数并执行之
    11 })();


    最后,要注意的一点是:

    闭包允许你引用存在于父级函数中的变量。然而,它并不是提供该变量创建时的值;它提供的是父级函数中该变量最后的值。你会看到这个问题最通常是在一个for 循环中。有一个变量被用作迭代器(比如i),在for内部新的函数被创建,并使用了闭包来引用该迭代器。问题是,当新的闭包函数被调用时,它们将会引用该iterator 最后的值(比如,一个数组的最后位置),而不是你所期望的那个。 

  • 相关阅读:
    JAVA课程设计——飞机大战(团队)
    面向对象设计大作业
    OO之接口-DAO模式代码阅读及应用
    有理数类设计
    图总结
    树、二叉树、查找算法总结
    二叉排序树
    数据结构小结
    C语言文件
    小程序云开发:联表查询去重及排序的不严谨笨办法
  • 原文地址:https://www.cnblogs.com/hdzsyp/p/1862933.html
Copyright © 2011-2022 走看看