이전에이 질문을 받았지만 검색 할 항목을 모르겠습니다.범위 지정 문제가있는 익명 함수 호출
그래서 함수를 클릭 한 항목에 해당하는 문자열로 호출하려고하지만 단순히 문자열 배열에 새 항목을 추가하려고합니다. 루프에서 다음과 같이 사용된다
는var menuList = ["overview", "help", "search"];
var functionCalls = [
function() { toggleMenu(menuList[0]); },
function() { toggleMenu(menuList[1]); },
function() { toggleMenu(menuList[2]); },
];
: $("something").click(functionCalls[i])
이 내가이 원하는 것입니다 (하지만 분명히 작동하지 않습니다) :
for (var i in menuList) {
// This does not work because the closure references 'i'
// which, at the end, is always the index of the last element
$("something").click(function() {
toggleMenu(menuList[i]);
});
// this works, but I have to define each closure
$("something").click(functionCalls[i]);
}
어떻게 할 수 변수를 기반으로 값을 받아들이지 만 변수에 대한 참조를 유지하지 않는 익명의 함수를 만듭니다.
JavaScript에서 배열을 반복하는 데'for ... in'을 사용하지 마십시오. 인덱스 변수와 간단한'for' 루프를 대신 사용하십시오. – Pointy
이 질문에는 많은 중복이 많이 있습니다. 자바 스크립트에서 매우 흔한 함정입니다. – Pointy
그 이유는 내가 이전에 물어 보았다고 확신하는 이유입니다. JS를 제대로 다루는 방법을 알기 위해 JS에 익숙하지 않거나 검색 할 대상을 찾지 못했습니다. – tsjnsn