2013-04-29 22 views
0

我發佈這個,因爲我深入研究了JavaScript和jQuery。以下代碼

$(function() { 
    alert('instance'); 
}); 

$(alert('hi')); 

按順序發出「hi」和「instance」!我確信對js的想法有一個理解,因爲我認爲這將是「實例」和「嗨」 - 任何人都可以解釋這一點嗎?謝謝

回答

2

$(function() { ... })第二種情況是$(document).ready(function() { ... })

別名你的第二個是有點無厘頭和評估的東西像這樣:

警報「嗨」,然後創建返回值(我相信undefined

+0

謝謝,$(something)=== $(document).ready(something)是我需要知道的事實 – 2013-04-29 18:23:08

0

$(function(){})$(document).ready(function(){})的快捷方式,這意味着$(function(){})中的代碼執行將被延遲,直到文檔被完全加載。

這裏的代碼執行順序將會像

  1. $(function(){})得到執行,導致註冊文檔準備回調
  2. $(alert('hi'));得到執行,這裏alert('hi')得到執行,導致彈出式窗口,它返回一個未定義的值到將忽略它的jQuery。
  3. 文檔準備事件被激發產生的註冊的回調即警報與instance

的代碼之間的區別在於你是不是立刻執行功能的第一種情況下執行,要傳遞的功能一個參數給jQuery(因爲在函數定義之後沒有())。 在你調用alert('hi')這將導致立即調用alert然後的alert返回的值傳遞給jQuery的

+4

我相信他失蹤的部分是他對$()的第二次調用正在傳遞警報的結果。 – 2013-04-29 12:42:32

0

的jQuery對象當你做

$(function() { 
    alert('instance'); 
}); 

,一個函數創建了會提醒「實例」,則函數傳遞給jQuery的($)。 JQuery會記住該函數,並在加載DOM樹時調用該函數。這是$(document).ready(function(){...})的別名。

當你

$(alert('hi')); 

alert('hi')立即調用,並且返回值將被傳遞給jQuery的。在「當DOM樹加載完成」之前,「立即」機會就會發生。

我測試過的每個地方,alert返回undefined。據我所知,將undefined傳遞給jQuery並沒有明顯的效果。

相關問題