내 프로젝트에서 몇 가지 (두 번 깊은 루프 프로 시저를 여러 번해야 의미합니다). ,일부 두 개의 깊은 루프 프로 시저를 추상화
function traverse(before, inside, after) {
for (var i = 0; i < length; i++) {
(before) ? before(i) : null;
for (var j = 0; j < second_length; j++) {
(inside) ? inside(i, j) : null;
}
(after) ? after(i) : null;
}
}
물론, 그 날을 위해 훨씬 더 바람직 듯 :
for (var i = 0; i < length; i++) {
something_here_maybe;
for (var j = 0; j < second_length; j++) {
something_else_here;
}
perhaps_other_thing_here;
}
지금 내가 그 일을 계속하고 싶지 않아, 그래서 몇 가지 시도 : 나는 동일한 작업을 수행해야합니다
traverse(function(x) { blabla; }, function(x, y) { blabla; }, function(x) { blabla; });
Mbut ... 난 단지 그 세 가지 기능이 서로 상호 작용하는 데 필요한 지점에 도착 : 내가 뭔가를 할 수 있다고 생각 주어진. 그리고 그들에있는 변수는 지역적입니다 - 그래서 그들은 상호 작용할 수 없습니다. traverse()에서 이러한 변수를 정의해야하지만, 필요한 변수가 무엇인지 미리 알지 못합니다. 나는 다른 값을 정의하려고 시도 할 것이다. "initialize"매개 변수는 traverse에서 (첫 번째 인수로) 이들 값을 초기화하는 함수가 될 것이다. 그러나 그것은 여전히 함수가 될 것이고, 그 변수들은 여전히 traverse()에 의해 취해지지 않고 그것의 지역 변수 일 것이다.
이 방법에 대한 아이디어가 있습니까? 아니면 단순히 할 수 없습니까? 어떤 생각이나 충고라도 감사 할 것입니다. 미리 감사드립니다.
글쎄, 내 생각, 개념, 즉 일종의 좋은 것 내가 필요했던 것과. 그럼에도 불구하고 함수 "funcA", "funcB", "funcC"및 "param"의 매개 변수를 "param"매개 변수로 보내려면 어떻게해야합니까? 나는 정말로 그렇게 할 수있는 방법을 생각할 수 없다는 뜻입니다. 그럼에도 불구하고이 문제가 발생하지 않았다면 나는 진정으로 받아 들일 수있는 것으로 표시했습니다. –
기능 범위가있는 local vars에 대한 주석 참조. 그들은 funcA, B 그리고 시체에서 접근 할 수 있습니다. – Hrishi