关于javascript:jQuery使用函数

jQuery use of functions

本问题已经有最佳答案,请猛点这里访问。

我不是很熟悉jQuery和它的功能。
有谁知道这些声明在做什么? (顺便说一句,他们包装了整个.js内容)

1
2
3
(function ($) { 'use strict' ... })(jQuery);

(function () { 'use strict' ... })();

我想,第二个是匿名函数的声明,不能让变量从外部访问。

我知道在加载DOM时会调用一个就绪函数。

1
$(function () { 'use strict' ... });

虽然我无法弄清楚前两个功能的作用。


它们是自我调用函数,保护范围。

注意在第一个函数中如何将参数(jQuery)接受为$。通过这种方式,您可以在任何地方使用短语法,同时仍然以非冲突模式运行。


1
(function ($) { 'use strict' ... })(jQuery);

这将使$仅在自调用匿名函数的范围内可用,这意味着$不会污染全局范围,并且它将确保$ jQuery。如果有其他框架设置自己的$(如原型),则函数closure $内部将是jQuery,因为jQuery是传入的参数,将被命名并在函数内可用作$ 。 JavaScript中的局部范围变量优先于父范围。

1
(function () { 'use strict' ... })();

这是一个自调用匿名函数,用作闭包,通常用于保持本地范围内的变量,而不是将它们泄漏到全局范围。


1
(function ($) { 'use strict' ... })(jQuery);

这个用于确保代码中的$是jQuery。可能存在其他库或代码被覆盖的情况。但是这段代码确保$是函数范围内的jQuery。

因此,两种情况下的功能代码都用于范围功能。


1
(function ($) { ... })(jQuery);

你可以认为这个语句分为2部分,(function ($) { ... })是创建一个匿名函数,(jQuery)是调用匿名函数,这类似于

1
2
3
4
function anonymous_function($) {
    ...
}
anonymous_function(jQuery);

其他一些库也会使用$(比如Zepto),所以将jQuery传递给param $可以确保$引用jQuery,这个匿名函数可以为你的语句创建一个安全的范围。

对于'use strict',你可以阅读更多关于它的信息:JavaScript中的"use strict"是做什么的,背后的原因是什么?