Ключевое слово javascript for
будет перебирать все свойства объекта. Если объект изменяется в теле цикла, что происходит?
Например, следующий код в порядке?
for(var key in obj)
if (whatever(obj[key]))
delete obj[key];
ОК, если этот код работает детерминистически и предпочтительно, чтобы все ключи в obj
тестировались ровно один раз. Напротив, в .NET или Java подобные конструкции обычно выдают исключение.