JavaScript fancybox"冲突包装"代码,它是如何工作的?

时间:2016-04-07 16:51:37

标签: javascript jquery

我遇到了这段代码:

(function($) {

    $("a img").fancybox({

        ... some more Fancybox code ...

    });

})(jQuery);

在教程中,这个人称之为"冲突包装" ...

但是,我不知道这个代码是如何工作的。也许我的Javascript有点生疏,但有人可以一步一步地向我解释这段代码是如何工作的吗?

这个函数是如何被调用的,它从里面的奇特代码中传来了$?

我只是不明白这个结构......

2 个答案:

答案 0 :(得分:1)

  

从哪里获得$

从这里开始:(jQuery) - 这只是传递给函数的全局jQuery对象,参数为$,因此jQuery可以作为$在函数内部访问,即使$在外面不可用(因为jQuery可能在无冲突模式下运行。)

  

这个函数如何调用

它是立即调用的 - 因为它最后有(…),这是用来调用JS中的函数,简单明了。

如果您需要有关立即调用函数的整个概念的更多信息,请查找 IIFE 一词。

答案 1 :(得分:1)

  

这个函数如何调用

这是一个立即调用的函数表达式IIFE,它在定义后立即执行 注意

(function($) {
^ this brace 
 // Rest of code

})(jQuery);
 ^^ These braces
  

从哪里获得$

它是从})(jQuery)传递的,它是全局jQuery对象。你也可以传递其他变量,如

(function(a,$) {
    console.log(a) // Will log Hello
     // Rest of code

    })("Hello",jQuery);