你的代碼實際上是不同類型功能的一個很好的例子。首先是$(),它代表JQuery庫 - 這是一個有用的JavaScript附加組件。您通常會給它一個名爲CSS選擇器的字符串,這是一種選取文檔的一部分(或多個部分)的方法。在這種情況下,您正在挑選整個文檔,但您也可以說像$(「#logo」),它將返回一個id =「logo」或$(「img」)的文檔將返回所有元素在文件中。
JS中的對象可以是任何東西,並且存在不同類型的對象。每種類型的對象都具有可用的特殊功能。這些函數被稱爲方法。
在上述例子中,由$(文件)返回的文檔對象具有向它提供的.keypress()方法,它偵聽特定按鍵。按鍵需要知道按下某個按鍵時該做什麼,並且通過將該按鍵作爲參數提供給該功能。每次按鍵時都會執行該功能。
有一兩件事要記住的JavaScript有用的是功能視爲「一等公民」,這意味着他們的直線上升值好儘可能的JavaScript關注。所以,如果我有這樣一個功能:
var myString = function(word)
{
return word;
}
如果我做的:
var myWord = "hello";
這是一樣的:
var otherWord = myString("hello");
如果我對它們進行比較:
var compareWords = function(word1, word2)
{
return word1 == word2;
}
var compareMyWords = compareWords(myWord, otherWord);
這就像說
一樣
var compareMyWords = true;
這很重要,因爲它意味着函數可以將其他函數作爲參數而沒有問題。我們看到這種情況發生在按鍵方法中。這可能是一個有點難以察覺,但你可以看到它,如果你事先聲明函數:
var keypressFunction = function(e)) {
if(e.which == 13) {
alert('You pressed enter!');
}
以下是與您的例子:
$(document).keypress(keypressFunction);
不同的是,你的榜樣使用匿名功能。它沒有用「var」或「function」聲明,所以如果我想要的話我不能重用它。這不是一件壞事。當你進入更高級的東西時,匿名函數非常有用。
您的匿名功能允許一個參數,一個對象表示實際上按下的鍵。在這種情況下,如果按下(Enter)鍵代表13所代表的鍵,它只想做點什麼。
最後有警報功能,彈出消息。請注意,函數並不總是必須返回一個值。通常當他們不這樣做時,他們會對自己的環境做些改變(否則有什麼意義)。在你的例子中,只有一個函數實際返回一些東西 - $()函數,雖然沒有用它做,但你可以繼續下去,並用句號替換分號,並使用ready()方法或任何方法可用於由$(document)返回的對象。其實,只要你知道正在返回什麼類型的對象,你可以這樣做:
$("#message").addClass("alert").fadeIn().delay().fadeOut();
由於每種方法返回相同的對象,我們可以做到這一點「方法鏈」。 jQuery故意試圖使其大部分方法返回它所作用的DOM對象,以便您可以執行此操作。其他庫,如d3.js,使用方法鏈來進行一些非常酷的視覺轉換。
我不認爲出發使用jQuery是可怕的人可能建議的想法。它仍然是JavaScript。有人可能會爭辯說,JQuery迫使你學習先進的概念(回調,CSS選擇器等),否則你可能會不知所措地拖延多年。我也可以爭辯說,在學習編程時,JavaScript本身就是一種糟糕的語言。
相反,我會說潛水和樂趣!最終的目的是通過以正確的方式做到這一點,不會因爲太糟糕而造成不可思議的事情。在學習和建設之間找到一個很好的平衡點,並且不要被那些來這裏嫉妒的嫉妒的計算器用戶過於沮喪,以此來扼殺他們曾經在構建真棒事物時所帶來的喜悅。聲明的功能
你或許應該完成的教程或閱讀有關JavaScript的一本好書。我推薦「權威指南」 – Munim
你的第一個例子是無效的,你必須在函數後面添加括號:'var foo = function(){/ * code ... * /}'。你的第二個例子可能是jQuery。這不是原生的JavaScript,它是一個框架。在使用框架之前,您應該學習純JavaScript。 –