The javascript `for` keyword will iterate over all properties of an object. If the object is modified within the loop body, what happens?

For example, is the following code OK?

```
for(var key in obj)
    if (whatever(obj[key]))
        delete obj[key];

```

OK would be if this code works in a deterministic fashion and preferably that all keys in `obj` are tested exactly once. By contrast, in .NET or Java similar constructs will typically throw an exception.