zoukankan      html  css  js  c++  java
  • 立即执行函数

    1.立即执行函数有两种写法:(立即执行函数是在定义函数时直接执行)

    ( function(){…} )()和( function (){…} () ),一个是一个匿名函数包裹在一个括号运算符中,后面再跟一个小括号,另一个是一个匿名函数后面跟一个小括号,然后整个包裹在一个括号运算符中,这两种写法是等价的

    2.使用立即执行函数的好处

    通过定义一个匿名函数,创建了一个新的函数作用域,相当于创建了一个“私有”的命名空间,该命名空间的变量和方法,不会破坏污染全局的命名空间。此时若是想访问全局对象,将全局对象以参数形式传进去即可,如jQuery代码结构:

    其中window即是全局对象。作用域隔离非常重要,是一个JS框架必须支持的功能,jQuery被应用在成千上万的JavaScript程序中,必须确保jQuery创建的变量不能和导入他的程序所使用的变量发生冲突。

    3.立即执行函数和闭包有什么关系

    和普通函数传参一样,立即执行函数也可以传递参数。如果在函数内部定一个函数,而里面的那个函数能引用外部的变量和参数(闭包),我们就能用立即执行函数锁定变量保存状态。

    <div>
        <ul>
            <li><a>第一个超链接</a></li>
            <li><a>第二个超链接</a></li>
        </ul>
    </div>
      var elems = document.getElementsByTagName('a');
        for(var i=0; i < elems.length; i++){
          (function (LockedInIndex) {
            elems[i].addEventListener('click', function (e) {
              e.preventDefault();
              alert('I am cliick Link #' + i);
            }, 'false')
          })(i)
        }

  • 相关阅读:
    斜率DP小结
    CF 1059 D Nature Reserve(double 精度问题)
    ZOJ 3747 Attack on Titans(DP+思维)
    BZOJ 1933 Bookcase 书柜的尺寸
    异或的一些性质
    (学习5 分治思想)最短对的问题
    (学习4)二分归并排序
    mac上git与github的联动
    (学习3)二分法与二叉查找树
    (学习2)Floyd和Dijkstra算法
  • 原文地址:https://www.cnblogs.com/psxiao/p/11376271.html
Copyright © 2011-2022 走看看