我不是很熟悉jQuery及其功能。 有谁知道这些声明在做什么? (顺便说一句,他们包装了整个.js内容)
(function ($) { 'use strict' ... })(jQuery);
(function () { 'use strict' ... })();
我想,第二个是匿名函数的声明,不能使变量在外部可访问。
我知道在加载DOM时会调用一个就绪函数。
$(function () { 'use strict' ... });
虽然我无法弄清楚前两个功能的作用。
答案 0 :(得分:4)
它们是自我调用函数,保护范围。
注意第一个函数中的参数(jQuery)如何被接受为$。通过这种方式,您可以在任何地方使用短语法,同时仍然以非冲突模式运行。
答案 1 :(得分:3)
(function ($) { 'use strict' ... })(jQuery);
这将使$
仅在自调用匿名函数的范围内可用,这意味着$
不会污染全局范围,它将确保$
为{ {1}}。如果有其他框架设置自己的jQuery
(如原型),则函数闭包$
内部将为$
,因为jQuery
是传入的参数,将被命名为在函数内部可用jQuery
。 JavaScript中的局部范围变量优先于父范围。
$
这是一个自调用匿名函数,用作闭包,通常用于保存本地范围内的变量,而不是将它们泄漏到全局范围。
答案 2 :(得分:1)
(function ($) { 'use strict' ... })(jQuery);
这个用于确保代码中的$是jQuery。可能存在其他库或代码被覆盖的情况。但是这段代码确保$是函数范围内的jQuery。
因此,两种情况下的功能代码都用于范围功能。
答案 3 :(得分:0)
(function ($) { ... })(jQuery);
你可以认为这个语句分为2部分,(function ($) { ... })
是创建一个匿名函数,(jQuery)
是调用匿名函数,这类似于
function anonymous_function($) {
...
}
anonymous_function(jQuery);
其他一些库也将使用$
(例如Zepto),因此将jQuery
传递给参数$
可以确保$
引用{{ 1}},这个匿名函数可以为你的语句创建一个安全的范围。
对于jQuery
,您可以在What does “use strict” do in JavaScript, and what is the reasoning behind it?