I couldn't agree more.  I'm very happy that for my purposes (and given 
JavaScript's quirks) I could avoid it, but sometimes
you just need to generate code and execute it.  ;-)   It's not evil and it 
has been going on in programming almost since
day one.  Who remembers graphics code that generated machine language and 
executed it?  It was the only way you could
get a decent bitblt out of an 8088.

Steve

On Wednesday, December 12, 2012 8:09:39 PM UTC-5, Jorge wrote:
>
> On 13/12/2012, at 01:47, Rick Waldron wrote: 
> > 
> > On Wed, Dec 12, 2012 at 7:20 PM, Jorge Chamorro 
> > <[email protected]<javascript:>> 
> wrote: 
> > On 12/12/2012, at 18:37, Rick Waldron wrote: 
> > > 
> > > On Wed, Dec 12, 2012 at 2:17 AM, Isaac Schlueter 
> > > <[email protected]<javascript:>> 
> wrote: 
> > > On Tue, Dec 11, 2012 at 7:18 PM, spqr <[email protected]<javascript:>> 
> wrote: 
> > > > maybe my question should have been "why does JavaScript have 
> eval()?" ;-) 
> > > 
> > > I think a lot of people have wondered the same thing. 
> > > 
> > > Yes, it has its uses, but at this point, I don't know of any that 
> > > aren't better served using some other mechanism.  eval() has weird 
> > > optimization-destroying semantics that cannot ever be changed, due to 
> > > the fact that JavaScript must be backwards compatible forever. 
> > > 
> > > 
> > > Runtime code generation? new Function( thecode ) works just as well, I 
> guess 
> > 
> > ...sometimes: 
> > 
> > (function (p) { 
> > 
> >   eval("(function(){console.log(p)})")(); 
> > 
> >   try { 
> >     Function("console.log(p)")(); 
> >   } 
> >   catch (e) { 
> >     console.log("FAIL -> "+ e.message); 
> >   } 
> > 
> > })("OK"); 
> > 
> > OK 
> > FAIL -> Can't find variable: p 
> > 
> > 
> > Of course not, but that's not what I was talking about, is it? I 
> definitely said "Runtime code generation", by which I meant "the entire 
> program" is first generated, by some means, into a string, which is then 
> eval'ed. See also: Traceur, CoffeeScript (anything the compiles something 
> else into JavaScript at runtime) 
>
>
> (Sorry I hit send too soon) 
>
> Well put, simple as that, I completely agree. 
>
> What eval() is: a call right to the compiler as in compile(program), which 
> is -no matter what they say- a very nice -power- feature to have. 
>
> And a footgun? Perhaps *sometimes*, yes, so? Beware and don't be fool! 
>
> Yet the fools are foolish and there's little to do about that, neither 
> eval() *nor*the*threads* are evil, nor the culprits. 
> -- 
> Jorge.

-- 
Job Board: http://jobs.nodejs.org/
Posting guidelines: 
https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines
You received this message because you are subscribed to the Google
Groups "nodejs" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/nodejs?hl=en?hl=en

Reply via email to