2013-05-18 54 views
5

我一直在做節目,我想知道開始兩個功能,像這樣的區別:Javascript與jQuery函數的區別?

$(function() { 
    //content 
}); 

function Name() { 
    //content 
} 

而且,爲什麼不能我名字的第一個例子嗎?我嘗試將第一個示例更改爲第二個類型,並且該函數完全停止工作。我在第一個例子中使用了jQuery,並且一切都很好,但是使用不同的示例,該函數停止工作。

那有什麼區別?

+0

'$'是一個函數。 '(function(){...});'以另一個函數作爲參數調用該函數。就像'function foobar(){...} $(foobar);' – 2013-05-18 19:29:21

回答

0

第一個是所謂的匿名函數。它在文檔就緒事件中執行

$(document).ready(...); 

並且是jQuery約定。既然你不能直接調用它,它沒有/不需要任何名字。

第二個版本是一個標準函數,您可以隨時通過名稱進行調用。

如果將第一個符號更改爲第二個符號,它將不再自動運行在準備好的文檔上。安全的方法是使用第二種表示法將「worklaod」移動到函數中,並用調用函數的第一個表示法創建一行。這樣你就擁有了兩全其美的功能:獨立可調用的函數和簡單的自動執行。

3

第一個是用於jQuery ready事件的函數表達式,第二個是函數。使用$(function(){...});$(document).ready(function(){...});的簡寫。

ready事件發生在文檔完成加載時,所以事件處理程序將自動運行。一個普通的函數根本不運行,除非你調用它。

可以自然地使用,而不是對事件處理函數的函數表達式常規功能:

function readyHandler() { 
    ... 
} 

$(readyHandler); // or $(document).ready(readyHandler); 

函數表達式可以來命名,例如:

var x = function y() { ... }; 

但是,函數表達式的名稱(示例中的y)不是全局的,它只能在函數內部使用。此外,瀏覽器之間的具體實現也不同,因此您應該避免使用它。

0

第一招:

$(function() { 
//content 
}); 

正在通過一個匿名函數到jQuery對象$,相當於$(document).ready(function(){});

第二隻是一個JavaScript函數命名爲Name

相關問題