メモ
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するとローカル変数も展開できるようになる
ローカル変数に対応させるには関数内関数を使う必要がある
毎回関数書くのをラクにするためにembedtmplに文字列で入れて、evalするだけでいいようにしてる
これだけでも面倒だけど
他の方法は関数内では変数展開する部分を+でつなぐように変換させて返り値にevalする
"abc{z}abc{y}abc{x}abc"
↓
"abc"+z+"abc"+y+"abc"+x+"abc"
こうすればevalするとローカル変数も展開できるようになる
コメントする