function check() { try { foo; return true } catch (e) { return false } } // This should alternate b/w false and true for all iterations // but after 16 iterations, both prints print "true" // => ReferenceError is not thrown in "check" method for "foo" // access after "foo" access becomes megamorphic for (var x = 0; x < 40; x++) { delete this.foo; print(check()); foo = 44; print(check()); }