Behavior of `eval` in non strict mode.

Benjamin (Inglor) Gruenbaum inglor at gmail.com
Fri Jan 10 17:50:07 PST 2014


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 <andre.bargull at udo.edu> 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é
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.mozilla.org/pipermail/es-discuss/attachments/20140111/14c428c8/attachment.html>


More information about the es-discuss mailing list