Да. Циклы просто состоят из трех выражений, каждый из которых выполняется в определенное время во время итерации цикла. Нет никаких реальных ограничений на то, что выражения могут или не могут быть выполнены, хотя вторая, как правило, должна возвращать логическое значение.
Первое выражение выполняется, когда цикл впервые попадает и предназначен для инициализации переменных. Наиболее распространенным примером является i = 0
, но вы можете делать практически все (i = 'a'
работает так же хорошо, или counter.reset()
).
Второе выражение выполняется перед каждой итерацией и, если оно возвращает false, предотвратит запуск цикла. Наиболее распространенным примером является i < n
, но вы можете использовать i.length < n
или counter.done()
.
Третье выражение выполняется каждой итерацией и предназначено для изменения некоторого счетчика, который в конечном итоге остановит цикл. Наиболее распространенным примером является ++i
, но вы можете использовать i = i + 'a'
или counter.next()
.
Все они являются действительными петли:
for (var i = 0; i < 10; ++i) { ... }
for (var i = 'a'; i.length < 10; i = i + 'a') { ... }
for (counter.reset(); counter.done(); counter.next()) { ... }
Да, это возможно. Не могли бы вы объяснить, что означает «не работает»? – Oriol
Это действительно работает. Какую ошибку вы получаете? – mehulmpt
int's подписаны по умолчанию, поэтому да, вполне возможно. –