使用自调用匿名函数和$(文档).ready
我刚刚学会了自称匿名函数。 我遇到的一些代码片段使用了自调用函数和$(document).ready。 使用两者似乎多余或毫无意义。
有没有你使用的情况
(function(){ $(document).ready(); })();
与
$(document).ready(function(){ (function(){})(); });
我想你要么想要立即执行脚本,要么在加载DOM之后执行脚本。 我不明白为什么你们两个都在一起使用。
谢谢。
第一个例子肯定有一个用例。 如果您在同一页面上加载了其他JS库/脚本,则无法保证它们不会覆盖$
变量。 (当你在同一页面上有Prototype和jQuery时,这很常见)。
因此,如果Prototype使用$
,则需要在使用jQuery
随时使用jQuery。 这可能会变得非常难看:
jQuery(function(){ jQuery('a', '#content').bind('click', function(){ if(jQuery(this).attr('href') == 'www.google.com') { alert("This link goes to Google"); jQuery(this).addClass('clicked')); } }); })
请记住,我们不能使用$
因为这是全局范围内Prototype的一种方法。
但如果你把它包裹在里面..
(function($){ $(function(){ // your code here }); })(jQuery);
$
实际上会在里面引用jQuery库,同时仍然在外面引用Prototype! 这有助于整理代码:
(function($){ $(function{}( jQuery('a', '#content').bind('click', function(){ if(jQuery(this).attr('href') == 'www.google.com') { alert("This link goes to Google"); jQuery(this).addClass('clicked')); } }); )); })(jQuery);
这是jQuery扩展的常见模式,以确保它们始终添加到jQuery对象中,但可以使用$
编写以保持代码整洁。
你不想一起使用它们,你正在做的事情需要你吗?
在http://qui.jquery.com/ready/的jquery api文档中,您可以看到以下示例:
.ready()方法通常与匿名函数一起使用:
$(document).ready(function(){
// .ready()的处理程序调用。});
这相当于调用:
$(function(){
// .ready()的处理程序调用。});
但是我不确定这是否能回答你的问题,因为我看不到你实际问的问题。 希望这有助于同样的事情!
引入另一个闭包的唯一原因是引入另一个范围边界来加载/保护全局对象,例如$。
例如:
$(document).ready(function(){ // Do upper scope things. (function(){ // Do lower scope things. })(); });
基于你说你最近了解这些东西,我认为你是相对较新的JavaScript。
我已经整理了一篇博文,可能有助于从JavaScript新手的角度解释一些基本概念,包括函数范围。 http://bit.ly/tLkykX