for (... in ...)
циклы не работают таким образом, в JavaScript это должно быть:
for (var b = 0; b < buttons.length; b++) {
buttons[b].style.backgroundImage = "url('darkSquare.jpg')";
}
for (... in ...)
фактически перебирает все "члены" объекта
например. использование var x = {a: 1, b: 2, c: 3}
в for(var m in x) console.log(m)
даст
> a
> b
> c
он работает с массивами, потому что считает элементы индексов такими:
var x = [1,2,3];
for (var m in x) console.log(m);
> 0
> 1
> 2
так как он дает вам индексы, как если бы они были членами, которых вы не можете различить. ловушка это:
var x = [1,2,3];
x.stuff = 'boo!';
for (var m in x) console.log(m);
> 0
> 1
> 2
> stuff
Общее правило : используйте for (... in ...)
только при переборе членов в объекте, for (var i = 0; i < array.length; i++)
при использовании массивов
вы всегда можете обмануть и использовать :
for (var i = 0, item = x[i]; i < x.length; item=x[++i]) {
// now item is the current item
}