以下假设是否准确?jquery匿名函数声明的含义
1)立即执行
(function(){
})();
2)上执行文件准备
$(document).ready(function(){
});
3)的简写用在文档准备
$(function(){
});
4)替代简写上文件准备用于避免交叉脚本冲突
(function($) {
})(jQuery);
以下假设是否准确?jquery匿名函数声明的含义
1)立即执行
(function(){
})();
2)上执行文件准备
$(document).ready(function(){
});
3)的简写用在文档准备
$(function(){
});
4)替代简写上文件准备用于避免交叉脚本冲突
(function($) {
})(jQuery);
是你的定义是正确的,第3 :)
虽然,除非你需要一个封闭,一个语句将立即执行,没有理由把它包起来像#1(当然也有很多有效的时间你需要关闭,只是注意如果你不......这是多余的)。然而
4号是不正确的,(function($) { })(jQuery);
不依赖于任何情况下,它只是一个封闭,使$ === jQuery
里面的,所以你可以使用$
快捷:
(function($) {
//You may use $ here instead of jQuery and it'll work...even if $ means
//something else outside of this closure, another library shortcut for example
})(jQuery);
非常丰富的答案。 Number 4主要用于防止自$ jquery文件被加载后在全局范围内覆盖$! – 2010-05-28 17:26:38
@ yaya3 - 是的,通常是['.noConflict()'](http://api.jquery.com/jQuery.noConflict/)让另一个库控制'$'的结果。但是,如果你想'document.ready'并且没有冲突,那么也有一个简短的版本,jQuery将它自己作为参数传递给ready处理程序,所以'jQuery(document).ready(function($){});'或者较短的'jQuery(function($){});'获得'''传递进来,更多的本地''== === jQuery'里面以及代码在'document.ready'上触发,漂亮整洁。或者使用任何其他名称:),例如'jQuery(function(myVar){myVar('#myElem')。hide();});' – 2010-05-28 17:30:30
太棒了,在这里学到了很多东西。谢谢 – 2010-05-28 17:31:51
这里的#4你正在寻找:
jQuery(function ($) {
});
它将运行在document.ready上,命名空间内,并定义为$的jQuery。
这样写出来的辉煌的方式,将给我们带来美元的力量,而不会带来负面影响。 – rncrtr 2012-08-13 18:03:05
最后一个常用于定义插件。 – 2010-05-28 17:08:43
编辑你的编号给它更好的代码格式,降价不喜欢直接在数字之下的代码,无论出于何种原因:) – 2010-05-28 17:14:04
干杯尼克,很好的 – 2010-05-28 17:19:22