2013-05-31 47 views
1

我遇到了一个公共的JavaScript片段有下面几行代码:

$(function() { 
    var v1, v2; 
    v1 = new V1; 
    return v2 = new V2(v1); 
}); 

功能的胆量是完全grokkable。但是,在$()中包装这个有什么意义呢?

回答

7

$(fn)$(document).ready(fn)的快捷方式。

+0

但是,尽管如此,在文档准备上定义一个函数没有多大意义,对吗?这只是一个定义。 – kirelagin

+1

这是一个函数*表达式*,不仅仅是一个定义。代码的意思是“使用这个函数,在这里定义为'ready'事件的处理程序。” – Jacob

+0

下面是关于函数声明与表达式的一篇很好的文章:http://javascriptweblog.wordpress.com/2010/07/06/function-declarations-vs-function-expressions/ – Jacob

4

$(function() {...});$(document).ready(function(){...});

的速记这意味着代码内将尽快DOM准备好执行。 BTW它的jQuery语法,没有真正纯粹的JavaScript等价物。它不等于window.onload = function(){...}在jquery中写道:$(window).load(function(){...});

不要自动叫匿名函数被愚弄在JavaScript中使用:

(function(){...})() 

(function(){...}())

+0

它相当于'document.addEventListener(“DOMContentLoaded”,fn,false);' – BrunoLM

+1

@BrunoLM并不那么简单。并非所有浏览器都支持这一点。但你是对的 – Ian

0

这记号别名$(document).ready(function() { ... });

1

$(fn)$(document).ready(fn)一个快捷方式,其DOMContent加载时执行fn

.ready文档,你可以看到,这3个等价

$(document).ready(handler) 
$().ready(handler) // this one is not recommended 
$(handler) 

使用纯JavaScript,你可以实现使用

document.addEventListener("DOMContentLoaded", fn, false); 

jQuery的文档相同的行为:

An example on jsFiddle

相关问题