On Apr 23, 2012, at 4:59 PM, Domenic Denicola wrote:
> As a day-to-day user who was not using strict until recently (stubborn other
> team member for the loss), I can say that moving to strict was much more a
> "cleanup" experience than a "mode" experience, with only a few small
> exceptions:
>
> 1) Poison-pilling arguments.callee: some code on the internet (notably [1],
> but elsewhere too) uses this property.
>
> 2) Throw on `delete`ing non-configurables: unlike the other
> throw-on-doing-something-bad, `delete`ing non-configurable properties was
> something we actually did on purpose. E.g. using it to clear an "entry" in a
> "map", whether or not that entry was ever filled. (Cf. [2].) We never tried
> writing to a non-writable property, because that would cause bugs, but
> `delete`ing a property that doesn't exist was a common pattern.
>
> [1]: http://www.devthought.com/2011/12/22/a-string-is-not-an-error/
> [2]:
> https://github.com/cjohansen/Sinon.JS/commit/80c38bd3e4b8813ab74ef27a4db3646e4778e31c
The delete issue is very much along the lines of what I was referring to in
another thread[3] today regarding "failure oblivious computing". I just don't
think I see a big benefit from a throw in the situation of deleting a
non-configurable property, particularly since there was already another
mechanism (delete operator returns false) that indicates that the delete could
not be performed.
IMO, this the delete strict mode throw was unnecessary and borders on being a
bad idea. Perhaps we could remove it from ES6. How much strict mode code do we
think is going to actually be dependent on getting that exception?
[3]: https://mail.mozilla.org/pipermail/es-discuss/2012-April/022526.html
Allen
_______________________________________________
es-discuss mailing list
[email protected]
https://mail.mozilla.org/listinfo/es-discuss