メモ

var embedtmpl = "var embed = function(str){return str.replace(/\{([^\}]*)\}/g,function(a,v){return eval(v);});}";

function a(){
eval(embedtmpl); // これを関数の最初に書く
var z = 12,y = 34, x = "AA";
return embed("abc{z}abc{y}abc{x}abc");
}
結果:"abc12abc34abcAAabc"
ローカル変数に対応させるには関数内関数を使う必要がある
毎回関数書くのをラクにするためにembedtmplに文字列で入れて、evalするだけでいいようにしてる
これだけでも面倒だけど

他の方法は関数内では変数展開する部分を+でつなぐように変換させて返り値にevalする
"abc{z}abc{y}abc{x}abc"

"abc"+z+"abc"+y+"abc"+x+"abc"
こうすればevalするとローカル変数も展開できるようになる