News for hackers. Stuff that matters.
Re:The root of all eval by hdhzy on Monday April 24, 2017 @02:35AM (#14182339)
In JavaScript it depends on how it is invoked: eval(a) has access to scope variables but x=eval;x(a) does not.
Re:The root of all eval by Gaelan on Monday April 24, 2017 @04:01AM (#14182613)
I am surprised that JavaScript can still surprise me.
Re:The root of all eval by hdhzy on Monday April 24, 2017 @06:53AM (#14183259)
I suggest reading the spec. 5.1 [0] although dated is written in very easy to understand language (well, most parts).

After that, fragments like this suddenly make sense:

    n = 1
    /1*"\/\//.test(n + '"//')

[0]: https://www.ecma-international.org/ecma-262/5.1/
Re:The root of all eval by Gaelan on Monday April 24, 2017 @01:38PM (#14186262)
My favorite bit of wat.js is this:

    [1,2,3] + [4,5,6] // => "1,2,34,5,6"
I mean, it makes some degree of logical sense (toString -> concat) but there is no reason that would ever be the intended behavior.

As for that expression, meh. You can write intentionally obtuse code in any language. The problem with JS is the behavior that is different from what you'd expect.