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