Консоль редактора сценариев After Effects регистрирует только последний объект в цикле for.

У меня есть следующий цикл for:

var arr = [ "a", "b", "c" ];
for(var i=0; i < arr.length; i++) {
    arr[i];
}

Когда я вызываю его в редакторе сценариев After Effects CC 2014, в консоли будет напечатано только c вместо:

a
b
c

Это нормально, что печатается только последний объект Array? Что происходит на заднем плане? Цикл работает нормально, как a, затем b, затем c, а печать только последнего объекта - это просто опция редактора сценариев?


person rihe    schedule 16.10.2017    source источник
comment
Да, как обычно, результат последнего оператора выводится на консоль в качестве ответа. Если вы хотите распечатать каждый элемент, вы должны написать это, вызвав console.log в теле цикла.   -  person Bergi    schedule 17.10.2017
comment
@ Берги просто console.log;?   -  person rihe    schedule 17.10.2017
comment
Нет. Вызовите его и передайте значение, которое вы хотите зарегистрировать.   -  person Bergi    schedule 17.10.2017
comment
@ Берги это должно быть console.log(arr[i]);?   -  person rihe    schedule 17.10.2017
comment
Ага, это. (Правда, я не знаю, есть ли глобальная функция console.log в After-Effects, я просто предположил обычную среду JS)   -  person Bergi    schedule 17.10.2017
comment
@Bergi, к сожалению, это не работает. Консоль этого редактора сценариев работает немного по-другому, она даже не печатает ошибку после того, как я пытаюсь ее запустить.   -  person rihe    schedule 17.10.2017
comment
В порядке. Итак, какова ваша настоящая проблема, что вы пытаетесь сделать? На вопрос в вашем теле (Это нормально? Что происходит?) можно ответить Да.   -  person Bergi    schedule 17.10.2017
comment
@Bergi Берги Я хотел бы знать, что цикл работает правильно. Проходит ли он ко всему массиву или только к последнему элементу массива. Когда я кодирую на других языках с такими редакторами, как Sublime Text, будет напечатано a b c вместо c, поэтому я хочу быть уверенным, что код работает так, как должен, и печать только последнего объекта не связана с кодом.   -  person rihe    schedule 17.10.2017
comment
Я не понимаю, зачем Sublime что-то печатать - это редактор. Если вы вставите код в консоль js вашего браузера, он запустит полный цикл и напечатает последний элемент. Нет причин, по которым он не прошел бы весь массив. Попробуйте сделать что-нибудь в цикле, например, суммировать или конкатенировать элементы массива и распечатать результат в конце. Кстати, если вы только учитесь программировать, я определенно рекомендую среду с объектом console.   -  person Bergi    schedule 17.10.2017


Ответы (1)


Это нормально, что печатается только последний объект массива?

Да, это нормальное поведение для ExtendScript Toolkit (ESTK),

Что происходит на заднем плане?

Я перебираю ваш массив.

Цикл работает нормально, как a, затем b, затем c, а печать только последнего объекта - это просто опция редактора сценариев?

Да. Очередной раз.

Если вы хотите распечатать что-то, вам нужно использовать $.write() или $.writeln(). Это будет видно в консоли ESTK. Вы можете найти дополнительную информацию о вспомогательном объекте $ в ESTK в разделе «Справка> Руководство по инструментам Javacript CC».

person fabianmoronzirfas    schedule 17.10.2017