2015-06-18 5 views
-4

Вот стандартный for цикл:Может ли javascript для цикла начинаться с отрицательного числа?

for (i=0; i<=5; i++) { 
    el.append('<span>' + i + '</span>'); 
} 

Это должно добавить 11 пролеты с текстом от -5 до 5, но это не работает на всех ...

for (i=-5; i<=5; i++) { 
    el.append('<span>' + i + '</span>'); 
} 

Является ли это можно начать с i = -5, например?


При создании Fiddle нашел ... делать орфографические ошибки i+= -5

Извините за тратить время :(

+2

Да, это возможно. Не могли бы вы объяснить, что означает «не работает»? – Oriol

+2

Это действительно работает. Какую ошибку вы получаете? – mehulmpt

+1

int's подписаны по умолчанию, поэтому да, вполне возможно. –

ответ

-2

Да, это возможно, и это работает отлично.

for (i=-5; i<=5; i++) { 
    ... 
} 

является то же, что и

i=-5; 
while (i<=5) { 
    ... 
} continue { 
    i++ 
} 

Дело в том, что любое выражение разрешено внутри первой части for.

+4

Если код в вопросе работает нормально, тогда вы не решают проблему, вы просто не может воспроизвести его. – Quentin

+1

@Quentin, Опять же, проблем нет. Вопрос в том, «возможно ли это?» Ответ «да», и я показал ему, как это сделать. – ikegami

+1

Вы слишком буквально читаете вопрос и не обращаете внимания на контекст. В нем говорится, что «это вообще не работает», делает предположение, что это из-за отрицательных чисел, а затем просит подтверждения. Реальный вопрос - как заставить этот код работать. – Quentin

-1

Да. Циклы просто состоят из трех выражений, каждый из которых выполняется в определенное время во время итерации цикла. Нет никаких реальных ограничений на то, что выражения могут или не могут быть выполнены, хотя вторая, как правило, должна возвращать логическое значение.

Первое выражение выполняется, когда цикл впервые попадает и предназначен для инициализации переменных. Наиболее распространенным примером является 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()) { ... }