Thanks, this clarifies things. I'll update the answer on SO to reflect the
findings.


On Thu, Jan 9, 2014 at 3:54 AM, André Bargull <[email protected]> wrote:

> Thanks for the reply.
>>
>> I'd actually expect `undefined` because function declarations does not
>> return anything. Converting it to a function expression kind of misses the
>> point since those are well... expressions :)
>>
>> I've tried looking in all the relevant places in the spec but still
>> couldn't unambiguously figure out which browser is 'correct'.
>>
>
> There are a few edge cases in reference resolution which are not correctly
> implemented in most browsers. Your example is basically the same as test
> case 2 from https://bugs.ecmascript.org/show_bug.cgi?id=1751. The
> relevant section in the specification is "12.13.4 Runtime Semantics:
> Evaluation": The left hand side of an assignment is always evaluated before
> the right hand side. This includes resolving and remembering the reference
> information for an identifier reference. In this case the identifier
> reference resolves to a binding on the global object, so assignment must be
> performed on the global, even if a (direct) eval expression introduces new
> bindings with the same name in the current scope.
>
>
> - André
>
_______________________________________________
es-discuss mailing list
[email protected]
https://mail.mozilla.org/listinfo/es-discuss

Reply via email to