> > > From: weepy > > > > > > $s = function(s) { > > > p = s.replace(/#{/g, "' + eval(").replace(/}/g, ") + '") > > > p = "'" + p + "'" > > > return eval(p) > > > } > > > > > > a="Jonah" > > > b=30 > > > > > > $s("#{a} is #{b} years old") > > > ==> "Jonah is 30 years old"
> > From: Michael Geary > > Sorry to be a party pooper, but what happens if you call $s from > > inside a function, using replacement variables that are > > local to that function? How will the "eval" see those variables? > From: Stephan Beal > You can, to the best of my knowledge, eval code created in > your local scope, referencing vars created in your scope. > > For some details, see: > > http://blog.zimki.com/tomi/2006/08/07/javascript-eval > > "What the eval method does is evaluate the passed string as > JavaScript in the context of the Object upon which it is called." Right, that was exactly my point. The eval function is being called inside the $s function, so it won't see local variables in a different function. For example, this won't work: function test() { a = "Jonah"; b = 30; alert( $s("#{a} is #{b} years old") ); } -Mike