[英]About function in javascript
很抱歉這個初學者的問題。 之間的功能用法有什么區別
$(document).keypress(function() {
//some code
});
和
var somethingElse = function() {
//some code
};
我知道后者是創建類似於Java的函數
public void somethingElse() {
//some code
}
但是我總是假設前者是在方法內部起作用的匿名函數。 有人可以給我一些啟示嗎? 謝謝。
創建一個anon函數並將其傳遞給處理程序
創建一個匿名函數和一個引用它的變量。
創建一個命名函數-懸掛
在您函數范圍內的任何行上都可以使用提升的函數,而未提升的函數在聲明該行的行運行之前是不確定的。
#2和#3(吊裝除外)之間沒有區別-有些人認為第一個創建對象,第二個是一些神奇的東西或全局函數,但不是-它們都是內部的函數對象您的范圍。
前者是一個回調 ,意味着一些指令僅在示例中的keypress
事件被觸發keypress
執行。 因此,不需要函數名稱。
函數表達式 (后者)通常在添加對象的屬性時使用,例如:
var myObject = {};
myObject.sayHello = function() {
alert("Hello");
}
第一個是創建事件偵聽器的jQuery快捷方式。 等效於:
document.addEventListener('keypress', function() {
// some code
});
更多信息: http : //www.w3schools.com/jsref/met_document_addeventlistener.asp
現在,關於命名或匿名函數,兩者之間有什么區別
var doSomething = function() {
// some code
};
和這個?
function doSomething() {
// some code
}
對於開發人員沒有任何區別。 當然,內存有所不同,但是在javascript開發人員中不必照顧它。
實際上,對於事件處理程序或使用回調函數的其他技術而言,您可以傳遞匿名函數或先前聲明的函數,這是完全相同的:
$(document).keypress(doSomething);
要么
$(document).keypress(function() {
// some code
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.