• 匿名函数和闭包的使用


         1. 什么是自执行的匿名函数?     
         它是指形如这样的函数: (function {// code})();
        2. 疑问 为什么(function {// code})();可以被执行, 而function {// code}();却会报错?
        3. 分析     
           (1). 首先, 要清楚两者的区别:     (function {// code})是表达式, function {// code}是函数声明.     
           (2). 其次, js"预编译"的特点:     js在"预编译"阶段, 会解释函数声明, 但却会忽略表式.     
           (3). 当js执行到function() {//code}();时, 由于function() {//code}在"预编译"阶段已经被解释过, js会跳过function(){//code}, 试图去执行();, 故会报错;     
        当js执行到(function {// code})();时, 由于(function {// code})是表达式, js会去对它求解得到返回值, 由于返回值是一 个函数, 故而遇到();时, 便会被执行.

       另外, 函数转换为表达式的方法并不一定要靠分组操作符(),我们还可以用void操作符,~操作符,!操作符……

      例如:
       bootstrap 框架中的插件写法:
       !function($){
      //do something;
       }(jQuery);

       和 
       (function($){
      //do something;
       })(jQuery); 是一回事。

    匿名函数最大的用途是创建闭包(这是JavaScript语言的特性之一),并且还可以构建命名空间,以减少全局变量的使用。
    例如:
         var a=1;
         (function()(){
        var a=100;
      })();
          alert(a); //弹出 1
    更多 闭包和匿名函数 可查看 Javascript的匿名函数与自执行 这篇文章。

  • 相关阅读:
    《Java技术》第七次作业
    《Java技术》第六次作业
    《Java技术》第五次作业
    《Java技术》第四次作业
    《Java技术》第三次作业
    《Java技术》第二次作业
    《Java技术》第一次作业
    股票——布林带
    股票——指数移动平均线
    股票——简单移动平均线
  • 原文地址:https://www.cnblogs.com/wangjie-001/p/6056746.html
Copyright © 2020-2023  润新知