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 最后的值(比如,一个数组的最后位置),而不是你所期望的那个。 

  • 相关阅读:
    Cookie与Session
    发布网站
    WCF服务寄宿Windows
    JQuery:各种操作表单元素方法小结
    setTimeout()与 setInterval()
    CSS样式
    循环获取<ul>下拉列表的的值。进行对比,正确的家样式
    js定时器 实现提交成功提示
    flask 实现登录 登出 检查登录状态 的两种方法的总结
    flask 状态保持session和上下文session的区别
  • 原文地址:https://www.cnblogs.com/hdzsyp/p/1862933.html
Copyright © 2011-2022 走看看