2013-05-31 49 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

相關問題