이름 당신의 기능을 window
오브젝트를 배치하여 :
for (i = 0; i < 10; i++) {
f = function() { func(i); }); // but see below
window['opdracht' + i] = f
opdrachtArray.push(f);
}
그러나 기본적인 문제가 있습니다. i
이상 가까운 따라서 func
항상 즉, 루프 완료 후 i
의 값으로 호출 될 것입니다 귀하의 모든 기능 (10) 하나의 솔루션은 다음과 같습니다 다음
function make_func(i) {
return function() {
return func(i);
};
}
for (i = 0; i < 10; i++) {
f = make_func(i);
window['opdracht' + i] = f;
opdrachtArray.push(f);
}
또는
for (i = 0; i < 10; i++) {
(function(i) {
var f = function() { func(i); };
window['opdracht' + i] = f
opdrachtArray.push(f);
}(i));
}
또는 단지 func.bind(null, i)
을 사용하십시오. 이는 거의 동일한 작업을 수행합니다.
for (i = 0; i < 10; i++) {
f = func.bind(null, i);
window['opdracht' + i] = f;
opdrachtArray.push(f);
}
왜 이름을 지정해야합니까? – elclanrs
나는 각 기능을 내가하고있는 것에 대한 별도의 과제로 사용하기 때문에. 이를 통해 나는 그들을 개별적으로 편집하고 분리 할 수 있습니다. – OriginDutch
XY 문제처럼 냄새가납니다 ... 그러나 배열 대신 키/값 개체를 사용하려고 할 수 있습니다. – elclanrs