【问题标题】:What does following a function with (jQuery, window, document); mean? [duplicate]使用 (jQuery, window, document) 跟随函数有什么作用;意思是? [复制]
【发布时间】:2012-10-04 09:20:14
【问题描述】:

我有以下插件:

;(function($, window, document)
{
...
...

})(jQuery, window, document);

我能理解 ;是为了并且也意识到 $ 是 jQuery 但有人可以解释为什么函数后面是 (jQuery, window, document);

【问题讨论】:

    标签: javascript jquery


    【解决方案1】:

    它被称为“自我调用”或“立即调用”功能。这意味着该函数在使用最后一组括号中的参数创建后立即运行。

    Further information

    【讨论】:

    • 那是什么;意思是;(函数?
    • @AshokRaj 这可能是一种确保在函数之前没有正确关闭的任何代码都被关闭以便它不会干扰此代码的方法。
    • 很好,谢谢 :) 这不会导致递归吗??
    • @AshokRaj 你认为它会以什么方式导致递归?
    • 如果错了我很抱歉,但是当函数本身在它结束时被调用时,不会继续发生吗?
    【解决方案2】:

    这称为立即调用函数表达式自执行匿名函数。它使开发人员能够隐藏他的私有声明。

    ;(                                 // <---------------+
                                       //                 | encapsulate the function
      function($, window, document) {  // <--+ declare    | and call it passing three
                                       //    | anonymous  | arguments.
      }                                // <--+ function   |
                                       //                 |
    )(jQuery, window, document);       // <---------------+
    

    【讨论】:

      【解决方案3】:

      我不确定我是否完全理解您的要求,但他们所做的是将jQuery 对象、window 对象和document 对象传递给函数。

      他们很可能出于性能原因这样做。这使得最小化器可以将所有对windowdocument 的引用缩短为wd,因为它是局部变量。在大型库中,这可以节省几个字节。

      此外,我相信 (没有参考 atm) 与全局变量相比,访问局部变量会稍微快一些(虽然实际上是一个微优化)。

      【讨论】:

        【解决方案4】:

        这是Immediately-Invoked Function Expression

        这意味着,该函数被立即声明并执行。这样做是为了创建一个新的范围。

        【讨论】:

          【解决方案5】:

          这是一个立即调用的匿名函数(所谓的 IIFE)。

          jQuery 的传递将其别名为 $windowdocument,因此他们可以确定引用是外部环境中的正确版本。

          【讨论】:

            猜你喜欢
            • 2015-04-21
            • 1970-01-01
            • 2011-05-09
            • 1970-01-01
            • 1970-01-01
            • 2011-07-08
            • 1970-01-01
            • 2015-05-29
            • 1970-01-01
            相关资源
            最近更新 更多