zoukankan      html  css  js  c++  java
  • Javascript的函数自调

    嗯 也不知道怎么翻译self-invoked,就当自调吧。

    在看bootstrap的轮播插件源码的时候发现一种新的自调函数的写法(其实应该不新了),开头的一段就卡住了,原谅我是个菜鸟,就顺便记录一下。stackoverflow上有大神们的回答在这里,轮播的函数形式如下:

    !function ($) {
       //code here
    }(window.jQuery);

    通常自调函数来模仿块级作用域的方式是:

    (function(parameters){
         //这里是块级作用域
    })();

    在function外面的这对括号使里面的匿名函数变成了函数表达式,并在之后马上调用。这个相当于:

    var Name=function(parameters){
       //这里是块级作用域
    }; 
    Name();  //调用匿名函数

    函数表达式是在运行中以引用的方式赋值给一个变量的,如上面的函数创建的方式。而这里函数表达式和函数声明是不一样的,函数声明的通常形式如下:

    function Name(parameters){
        //code here
    }

    函数声明会在程序刚开始运行的时候会被提升(所以可以在执行之后声明),但是并不执行,直到被调用的时候再执行。

    所以与括号作用相同的function前面的感叹号,因为括号的优先级高于感叹号,感叹号使得后面的一整串内容变成了一个bool表达式,编译器就会直接运行这个表达式了。这个表达式是个匿名函数,传入了一个参数,这里命名成$,其实无所谓是什么,只是一个形参,并在自调的时候把jQuery对象传进去,这里的jQuery对象是个全局变量,所以是windows.jQuery

  • 相关阅读:
    C++ version the delaunay triangulation
    Jason Saragih's Homepage
    asm/aam links
    自动白平衡算法效果图
    What algorithm to use to normalize someone's face on image
    神奇的图像处理算法
    计算机视觉牛人博客和代码汇总
    雅虎开源色情图片检测神经网络
    蚁群算法
    时间序列分析
  • 原文地址:https://www.cnblogs.com/sparkmorry/p/3538515.html
Copyright © 2011-2022 走看看