簡體   English   中英

關於JavaScript中的函數

[英]About function in javascript

很抱歉這個初學者的問題。 之間的功能用法有什么區別

$(document).keypress(function() {
  //some code
});

var somethingElse = function() {
  //some code
};

我知道后者是創建類似於Java的函數

public void somethingElse() {
  //some code
}

但是我總是假設前者是在方法內部起作用的匿名函數。 有人可以給我一些啟示嗎? 謝謝。

  1. 創建一個anon函數並將其傳遞給處理程序

  2. 創建一個匿名函數和一個引用它的變量。

  3. 創建一個命名函數-懸掛

在您函數范圍內的任何行上都可以使用提升的函數,而未提升的函數在聲明該行的行運行之前是不確定的。

#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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM