Я пишу код для программы под названием illustrator, которая позволяет вам использовать JavaScript. Это сводит меня с ума, и я думаю, что это связано с замыканиями, но я не уверен, что это так, или я просто что-то упускаю.
У меня есть следующий код:
function runSomeStuff() {
// some stuff gets done here unrelated variables set
// after I have the following for loop which opens the document
for (var currentTemplate = 1; currentTemplate <= 3; currentTemplate++){
// opens file and does a few if statements... works fine.
// here I have another for loop where the problem comes up
for (var i = 1; i <= 18; i++) {
// run some code here
}
}
}
Способ, которым он должен работать, состоит в том, что он должен повторять цикл 3 раза над первым для функции, которая содержит другой для функции. Так и должно работать вот так.
Первый для запуска функции
Второй внутри первого запуска 17 раз, затем выходит, делает то, что ему нужно, затем снова начинает работать.
Проблема в том, что после первого запуска функции for один раз, когда она возвращается в цикл, она не запускается. Вторая функция не запускается снова. Я добавил оповещение для var i, и он дал мне 19, когда он пытался запустить во второй раз. Я ожидал бы, что var i снова будет равен 1, поскольку он вызывается во втором запуске. Он появляется даже после того, как он существует, и я сохраняю его значение, когда оно было в цикле for, так что оно ложно, поскольку я был бы больше 18.
РЕДАКТИРОВАТЬ: из-за программы, в которой он используется, я не могу использовать let или const.