Brendan Eich wrote:
Without arguments runtime semantic shifts, and with |this| lexical,
there aren't many strict mode changes left IIRC, and they are pretty
edgy edge cases.
Dave Herman pointed out the shift for |this|-binding in function nested
in arrow, under the proposal that arrow implies strict mode:
(x, y) => { obj.m = function(…){…} }
Again the break if that arrow is strict is for edge cases, not anything
calling obj.m(...) or via prototype delegation. obj.m.call(undefined,
...) would not substitute the global object, and primitives would not be
boxed.
True enough, but I hang tough on wanting arrows to imply strictness. I
may be wrong but the edge cases cited so far (global variable creation
by assignment, 'with', direct eval injecting 'var' into its dynamic
scope) along with this |this|-boxing one are underwhelming.
The other good point that came out in discussion with Dave was that
module as implicitly strict works better (depending on your belief about
future uses) than arrow as implicitly strict would, because (a) modules
are bigger; and/or (b) modules are top-level (nesting only in other
modules up to the top level) and cannot nest in functions or expressions.
I buy that as a one-off argument for imputing strictness to module
bodies. I still think arrows could be next in line, knocking at the
door, asking why they are getting the brush-off.
/be
_______________________________________________
es-discuss mailing list
[email protected]
https://mail.mozilla.org/listinfo/es-discuss