У меня есть ситуация, когда я пишу несколько функций, которые используют метод работы, и мне бы очень хотелось реорганизовать и убрать этот код, вместо того, чтобы эти же блоки совершались бесчисленное количество раз, чтобы выполнять небольшие различия. Учитывая блок информации, я просматриваю каждую запись и выполняю операции над рассматриваемым блоком. Примером рекуррентной функции выглядит следующим образом:Рекуррентная встроенная функция или функция внутри функции?
function basicFunc() {
var totalX = 2000, totalY = 2000;
for (var y = 0; y < totalY; y++) {
for (var x = 0; x < totalX; x++) {
/* Fake operation for theory */
var fakeVar = (y * x);
}
}
};
Сравнительное к:
function eachBlock(whatToDo, totalX, totalY) {
for (var y = 0; y < totalY; y++) {
for (var x = 0; x < totalX; x++) {
/* Fake operation for theory */
return whatToDo;
}
}
};
function basicFunc() {
var totalX = 2000, totalY = 2000;
eachoBlock("var fakeVar = (y * x)", totalX, totalY);
};
Это прекрасно работает для одиночных линий, которые передаются в качестве параметра whatToDo
. Как бы вы пропустили несколько строк до eachBlock()
, скажем, если у вас есть куча операций, а не одна операция var FakeVar
?
TLDR: Как вы можете использовать вызов функции внутри функции, чтобы обернуть исходный блок операций с кодом, который он выполнял, прежде чем стать отдельной функцией?
Последовательность точек с запятой не требуется после блоков (например, функциональных тел). – Ryan
Почему бы вам просто не передать функцию «whatToDo» вместо строки «полный операций»? – Tyblitz
Это точно суть, которую я получаю в Тиблице. Я не знаю о лучшей или правильной практике, чтобы сделать именно это. – user3223880