我遇到了一個公共的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