我有如下jQuery代码块;
(function($){
//Normal code goes here
})(jQuery);
现在我想了解
谢谢。
答案 0 :(得分:3)
如果这是一个自动执行的功能?如果是,为什么?
是和否。它是一个Immediately-Invoked Function Expression,但有些人倾向于将这些称为“自执行”,即使这通常与递归的概念有关。
传递给函数的“$”和最后指定的“jQuery”有什么区别?其中一个被称为参数和另一个参数吗?
完全。
是否有必要在最后指定“jQuery”。
否则将填充$
参数?
我还要再添一个你似乎错过的问题:
为什么要使用立即调用的函数表达式?
它只是在{II}范围内将jQuery
别名为$
,因此您可以安全地使用$
,而不管jQuery是否处于noConflict
模式。对于开发插件和使用WP非常有用。
答案 1 :(得分:1)
是的,这是“自我执行”。内部部分是一个“函数表达式”,然后(必要的)参数(jQuery)
会导致它被立即调用,因此更常用的术语是“立即调用的函数表达式”。
变量$
在函数范围内是本地的。 jQuery插件通常以这种方式编写,因此即使jQuery处于“无冲突”模式,也可以在内部使用公共$
缩写,因为(全局)$
变量正被其他东西使用
正式声明中的变量称为“参数”,调用中的变量称为“参数”。我认为在JS中出现了歧义,因为您可以使用arguments
伪数组访问提供的参数。
答案 2 :(得分:0)
1)自我执行和立即执行
你可以说,因为它最后得到了parens。
你写了这样一个函数:
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";
params可以与参数命名不同的事实意味着你可以"别名"函数内部的值不同。
function myFunc ($) { console.log($); }
myFunc("SUPERLONGSTRINGOFDOOMISWHATI'MPUTTINGINHERE");
myFunc(MYAPP.Module.sub_module.plug_in);
同时,在函数内部,所有这些事情都可以使用,只需使用$
。
3)"别名"是jQuery
与$
的对比。