當我在下面的另一個函數中聲明OnSuccess
時,瀏覽器開發人員工具控制檯指出在全局範圍內沒有稱爲OnSuccess
的函數的錯誤。因此,我推斷在另一個函數內部聲明的任何函數仍然作爲HTML DOM window
對象的函數被掛起/固定/處理。JavaScript函數內部的JavaScript函數,閉包等
然後,我聲明OnError
像你聲明一個對象初始值設定項內的成員。那也行不通。我可以做
的方法之一是移動這兩個OnError
和OnSuccess
的AssignBackupOnServer
功能之外,但我想OnSuccess
和OnError
能夠看AssignBackupOnServer
的局部變量,所以我的AssignBackupOnServer
函數內聲明它。
如果我想讓包含的lambda在其包含/封閉函數的捕獲變量上展示閉包,那麼關於此聲明的正確方法是什麼?
function AssignBackupOnServer(mainGuyUId, backupUId, backupFirstName, backupLastName) {
var url = '/Foo/SearchForBackup';
$.ajax(url,
{
cache: false,
async: false,
type: 'POST',
data: JSON.stringify(
{
'mainGuyUId': mainGuyUId,
'backupUId': backupUId,
'backupFirstName': backupFirstName,
'backupLastName': backupLastName
}),
dataType: 'json',
contentType: 'application/json',
success: AssignBackupOnServer.OnSuccess,
error: AssignBackupOnServer.OnError
});
function OnSuccess(data, textStatus, jqXHR) {
// I want to use mainGuyUId, backupUId,
// backupFirstName, and backupLastName
// here and therefore, I want this function
// to exhibit a closure on its containing lambda
// so I have declared it here
}
OnError : function(jqXHR, textStatus, errorThrown) {
}
}
謝謝。 :-)這是我一開始就做的事情,但我不記得它是否給了我一個錯誤或沒有。請讓我嘗試一下並回復你。 –
謝謝。這工作。 :-) –