Допустим, у меня есть массив
var array = [ {name: "woo"}, {name: "yay"}, {name: "hoopla"} ]
Почему это работает
for (var i=0; i<array.length; i++) { var item=array[i]; alert(item.name) // woo, yay, hoopla }
Но это не так?
var item; for (var i=0; i<array.length; item=array[i++]) { alert(item.name) // undefined }
На первой итерации цикла item=array[i++] еще не было выполнено, поэтому item все еще имеет свое начальное значение.Третья часть оператора for выполняется между итерациями, но не при запуске циклов.
item=array[i++]
item
for
Это должно работать
var item; for (var i=0; item=array[i], i<array.length; i++) { alert(item.name) // undefined }
Это потому, что в первый раз в цикле переменная item не получает присваивания
A for инструкция состоит из 3 частей, счетчик (var i = 0;), предел (я
Другой способ перечисления массива объектов в JavaScript:
for(var item in array) alert(array[item])
Поскольку в первой итерации item еще не определено, оно будет работать, если вы измените свой код на:
for ( item=array[i=0]; i<array.length; item=array[++i] ) { alert(item.name) }