아래와 같이 다른 함수에 OnSuccess
을 선언하면 브라우저 개발자 도구 콘솔에 OnSuccess
이라는 전역 함수가 없다는 오류가 표시됩니다. 이것으로부터, 다른 함수 내에서 아래처럼 선언 된 함수는 여전히 HTML DOM window
객체의 함수로 올려 짐/고정/처리된다는 것을 추론합니다.JavaScript 함수, 클로저 등의 JavaScript 함수
그런 다음 객체 이니셜 라이저 내에서 멤버를 선언하는 것처럼 OnError
을 선언합니다. 그것도 작동하지 않습니다. 내가 할 수있는
한 가지 방법은 AssignBackupOnServer
함수 외부 OnError
및 OnSuccess
모두를 이동하지만, 나는 AssignBackupOnServer
의 지역 변수를보고 할 수 있도록 OnSuccess
및 OnError
을 원하는, 그래서 AssignBackupOnServer
함수 내에서 그것을 선언했다.
포함 된 람다에 포함 된/포함하는 함수의 캡처 된 변수에 클로저가 표시되도록하려면이 선언에 대한 올바른 방법은 무엇입니까?
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) {
}
}
감사합니다. :-) 그게 내가 처음에 한 일이지만, 그것이 나에게 오류가 발생했는지 여부를 기억하지 못한다. 그것을 시도하고 당신에게 돌아 가자. –
고맙습니다. 그게 효과가 있었어. :-) –