0

我有如下的jQuery代码块;

(function($){
  //Normal code goes here
})(jQuery);

现在我想了解

  1. 如果这是一个自执行功能?如果是,为什么?
  2. 传递给函数的“$”和最后指定的“jQuery”有什么区别?其中一个是参数,另一个是参数吗?
  3. 是否有必要在最后指定“jQuery”。

谢谢你。

4

3 回答 3

3

如果这是一个自执行功能?如果是,为什么?

是和不是。它是一个立即调用的函数表达式,但有些人倾向于称这些为“自执行”,尽管这通常与递归的概念相关联。

传递给函数的“$”和最后指定的“jQuery”有什么区别?其中一个是参数,另一个是参数吗?

确切地。

是否有必要在最后指定“jQuery”。

否则从哪里$填充参数?


我将再添加一个您似乎必须错过的问题:

为什么要使用立即调用函数表达式?

它只是在 IIFE 范围内的别名,因此您可以安全地使用jQueryjQuery是否处于模式。对于开发插件和使用 WP 非常有用。$$noConflict

于 2013-01-21T10:43:36.357 回答
1

是的,它是“自我执行”。内部是一个“函数表达式”,然后(必要的)参数(jQuery)导致它立即被调用,因此更常用的术语是“立即调用的函数表达式”。

该变量$在函数范围内是局部的。jQuery 插件通常以这种方式编写,因此$即使 jQuery 处于“无冲突”模式,也可以在内部使用通用缩写,因为(全局)$变量正在被其他东西使用。

正式地,声明中的变量称为“参数”,调用中的变量称为“参数”。我认为在 JS 中会出现歧义,因为您可以使用arguments伪数组访问提供的参数。

于 2013-01-21T10:41:11.350 回答
0

1) 自动执行和立即执行

你可以说出来,因为它最后有括号。

你写一个这样的函数:

function myFunc () {}

或喜欢

var myFunc = function () {};

你调用一个函数,比如:

myFunc();

你把它写成(function () {})();这样,它会在它结束时立即触发。

2)参数是函数所期望的。参数是你赋予函数的东西。

var number_arg = 35,
    string_arg = "Bob";

function myFunc (number_param, string_param) {
    console.log(number_param, string_param);
}

myFunc(number_arg, string_arg); // 35 "Bob";

参数可以与参数命名不同的事实意味着您可以在函数内部以不同的方式“别名”值。

function myFunc ($) { console.log($); }

myFunc("SUPERLONGSTRINGOFDOOMISWHATI'MPUTTINGINHERE");

myFunc(MYAPP.Module.sub_module.plug_in);

同时,在函数内部,所有这些东西都可以使用,只需使用$.

3)“别名”是与jQueryvs发生的事情$

于 2013-01-21T10:49:16.890 回答