gpt4 book ai didi

JavaScript 函数内部的 JavaScript 函数、闭包等

转载 作者:行者123 更新时间:2023-12-02 17:55:43 27 4
gpt4 key购买 nike

当我在另一个函数中声明 OnSuccess 时,如下所示,浏览器开发人员工具控制台会指示一个错误,表明全局范围内没有名为 OnSuccess 的函数。由此,我推断在另一个函数中像下面这样声明的任何函数仍然被提升/固定/视为 HTML DOM window 对象的函数。

然后,我声明 OnError 就像在对象初始值设定项内声明成员一样。这也行不通。

我可以做的一种方法是将 OnErrorOnSuccess 移到 AssignBackupOnServer 函数之外,但我想要 OnSuccess code> 和 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) {
}
}

最佳答案

您与 OnSuccess 很接近,但在引用它时略有错误。您不需要 AssignBackupOnServer. 前缀:

    success: OnSuccess,
error: OnError
});

function OnSuccess(data, textStatus, jqXHR) {
}

function OnError(jqXHR, textStatus, errorThrown) {
}

关于JavaScript 函数内部的 JavaScript 函数、闭包等,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20974467/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com