Banning assignment to a function call
allen at wirfs-brock.com
Wed Jun 19 10:48:17 PDT 2013
On Jun 19, 2013, at 9:14 AM, Oliver Hunt wrote:
> I would be pro-killing this particular misfeature. I know we have tests that verify that we accept the syntax, but i'm not sure if there's still *real* content the depends on it.
> Does strict mode disallow it? IIRC strict mode has a blanket ban on non-reference lhs in assignment expressions but I don't have the spec handy.
No, not in ES5/5.1. ES5 allows an early error for an assignment to that can be statically determined to be to a non-reference. However, it also allows host functions to return references). So presumably a call on the the LHS must be accepted in ES5/5.1 even though it will likely produce a runtime Reference error.
In the ES6 spec. no function call is allowed to return a reference and so a call on the LHS would be an early Reference error.
> On Jun 19, 2013, at 7:40 AM, Jason Orendorff <jason.orendorff at gmail.com> wrote:
>> The program
>> if (0) Math.sin(0) = 1;
>> is permitted in all the major browsers. This was explicitly optional in ES1-5, but dropped from ES6:
>> And good riddance, if we really think implementations can drop support for this cursed-legacy syntax. I'm willing to experiment with making this an early ReferenceError in Firefox. But if anyone has tried and run into Web compatibility issues, please speak up and save me some wasted effort!
>> es-discuss mailing list
>> es-discuss at mozilla.org
> es-discuss mailing list
> es-discuss at mozilla.org
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the es-discuss