루프에서 동적으로 생성 된 함수로 작업하고 있습니다.변수를 문자열로 삽입하는 방법은 무엇입니까?
for (var i = 0; i < 4; i++) {
window["functiontest" + i] = function() { alert(i); }
}
작동하지만 어떻게 작동 시키려하는지는 알 수 없습니다. 이렇게하면 functiontest0
이 실행될 때 루프가 i
에 추가되는 동안 실제로 var i
에게 경고하므로 "3"으로 경고합니다.
내가 원하는 것은 현재 i
을 어떻게 든 "하드 코드"하여 "3"이 아닌 "0"을 실제로 경고합니다.
window["functiontest" + i] = function() {
// I need just the current state for `i` here and
// not just the variable `i` - so for exampe I need
// it as `i` literally put 0
}
나는 "문자열"또는 뭔가에 결과를 작성하는 강제 수있는 방법이 있나요 :이 같은 말인가요?
도움 사람을위한 THX. 그리고 중복에 대한 미안하지만 그것을 검색하는 동안 아무것도 찾을 수 없습니다. 내가
:-)이 잘 설명을 couldnt하지만 난 이런 일에 결국 대부분 때문에 :
for (var genfunc = 0; genfunc < 4; genfunc++) {
if (genfunc == 0) { //left
window["keyDown" + sys_curcontrols[genfunc]] = (function (unique) {
return function() { window["sys_keyLeft" + unique] = -1; }
})(nid);
}
아니요. 범위를 작성하는 함수를 실행할 때 가장 좋은 예입니다. 클로저를 자유 변수가있는 함수로 정의하면 방금 추가 한 함수는 클로저가 아닙니다. 그러나 반환하는 함수 (및 원래 코드의 함수)는 클로저이므로 문제가 존재하는 이유입니다 (JavaScript가 자유 변수를 처리하는 방식 때문에). –
@FelixKling, 좋은 지적. 나는 대답을 수정했다. – Lukas
thx for help :-) – JohnMalkowich