나는 여기 무언가를하고 있다고 확신하지만, 나는 무엇을 확신하지 못한다. 익명 함수를 나중에 실행을 위해 배열에 추가하고 각 반복을 변경하는 변수가있는 for 루프에 익명 함수를 추가합니다. 은 https : server.net/a 은 https : server.net/b익명 함수의 범위 및 외부 변수에 액세스 하시겠습니까?
대신 내가 받고 있어요 :
내가 기록 된 값을 기대하고있어이 될 은 https : server.net/b https : server.net/b
마지막 버전을 덮어 쓰는 기능을 재정의 한 것처럼 보일 수도 있지만 그 이유는 확실하지 않습니다. 각 익명의 기능이 다를 것이라고 생각합니다.
왜? 여기서 내가 뭘 잘못하고 있니?
f = [];
items = ['a', 'b'];
for(var i = 0; i < items.length; i++){
var itemID = items[i];
var itemAccessUrl = `https://server.net/${itemID}`;
var func = function(){
console.log(itemAccessUrl);
};
f.push(func);
}
console.log(f.length);
for(var j = 0; j < f.length; j++){
func();
}
가능한 복제를 호출
는 또한 두 번째 루프를 변경해야 [ 루프 내에서의 JavaScript 클로저 - 간단한 실제 예제 (https://stackoverflow.com/questions/750486/javascript-closure-inside-loops-simple-practical-example) – Adam