Re: Behavior of `eval` in non strict mode.

2014-01-10 Thread Brendan Eich
André Bargull wrote: 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

Re: Behavior of `eval` in non strict mode.

2014-01-10 Thread Benjamin (Inglor) Gruenbaum
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.barg...@udo.edu wrote: Thanks for the reply. I'd actually expect `undefined` because function declarations does not return anything. Converting it to a

Re: Behavior of `eval` in non strict mode.

2014-01-10 Thread Andrea Giammarchi
I've learned it the hard way ... when in doubt, see what Firefox does ... usually that's the meant standard behavior. I really wish JavaScript was a Test Driven developing programming language ... the amount of fragmentation for every single little thing apparently never tested against meant

Re: Behavior of `eval` in non strict mode.

2014-01-10 Thread Brendan Eich
Things to complain about! JS interop is far better than other languages with multiple implementations. Never mind complex APIs such as the DOM. /be On Jan 10, 2014, at 7:05 PM, Andrea Giammarchi andrea.giammar...@gmail.com wrote: I've learned it the hard way ... when in doubt, see what

Behavior of `eval` in non strict mode.

2014-01-08 Thread Benjamin (Inglor) Gruenbaum
I've recently run into this question in Stack Overflow: http://stackoverflow.com/q/21008329/1348195 ``` function f() { f = eval( + f); console.log(Inside a call to f(), f is: \n%s, f);} f(); console.log(After a call to f(), f is: \n%s, f); ``` What should the output of the following

Re: Behavior of `eval` in non strict mode.

2014-01-08 Thread Andrea Giammarchi
looks rather an eval gotcha but I think Firefox is correct anyway. try `f = eval(( + f + ));` instead and it should produce what you expect (I guess) Regards On Wed, Jan 8, 2014 at 3:37 PM, Benjamin (Inglor) Gruenbaum ing...@gmail.com wrote: I've recently run into this question in Stack

Re: Behavior of `eval` in non strict mode.

2014-01-08 Thread Benjamin (Inglor) Gruenbaum
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

Re: Behavior of `eval` in non strict mode.

2014-01-08 Thread Andrea Giammarchi
I think eval returns whatever it evaluates ... i.e. `var x = eval('123');` x will be 123 since it's returned. Accordingly, if you assign a function, this should be returned and become automatically an expression. The inconsistency exists using explicitly parenthesis but I don't remember specs

Re: Behavior of `eval` in non strict mode.

2014-01-08 Thread André Bargull
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