我遇到了一个公共的JavaScript片段有下面几行代码:
$(function() {
var v1, v2;
v1 = new V1;
return v2 = new V2(v1);
});
功能的胆量是完全grokkable。但是,在$()
中包装这个有什么意义呢?
我遇到了一个公共的JavaScript片段有下面几行代码:
$(function() {
var v1, v2;
v1 = new V1;
return v2 = new V2(v1);
});
功能的胆量是完全grokkable。但是,在$()
中包装这个有什么意义呢?
$(fn)
是$(document).ready(fn)
的快捷方式。
$(function() {...});
为$(document).ready(function(){...});
的速记这意味着代码内将尽快DOM准备好执行。 BTW它的jQuery语法,没有真正纯粹的JavaScript等价物。它不等于window.onload = function(){...}
在jquery中写道:$(window).load(function(){...});
。
不要自动叫匿名函数被愚弄在JavaScript中使用:
(function(){...})()
或 (function(){...}())
这记号别名$(document).ready(function() { ... });
$(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的文档相同的行为:
但是,尽管如此,在文档准备上定义一个函数没有多大意义,对吗?这只是一个定义。 – kirelagin
这是一个函数*表达式*,不仅仅是一个定义。代码的意思是“使用这个函数,在这里定义为'ready'事件的处理程序。” – Jacob
下面是关于函数声明与表达式的一篇很好的文章:http://javascriptweblog.wordpress.com/2010/07/06/function-declarations-vs-function-expressions/ – Jacob