素人がプログラミングを勉強していたブログ

プログラミング、セキュリティ、英語、Webなどのブログ since 2008

連絡先: すかいぷ:javascripter_  か javascripter あっと tsukkun.net skypeのほうがいいです

E4Xで変数展開、テンプレート

var foo=123;
<>変数fooは{foo}です。</>.toString();//"変数fooは123です。"

{や}という文字を入れたい場合は、実体参照にするか、CDATAセクションに入れる必要がある。{}内には、変数だけじゃなくて式とかも入れられる。

文字列を数値文字参照にするブックマークレット:

javascript:void prompt('コピーしてください',Array.map(prompt(),function(c)'&#'+c.charCodeAt(0)+';').join(''));

数値文字参照を文字列にするブックマークレット

javascript:void prompt('コピーしてください',prompt().replace(/&#(\d+?);/g,function(i,str)String.fromCharCode(str)));

速度について。

console.time('e4x')
for(var i=0;i<1000;i++)
  <>1+1={1+1}</>.toString();
console.timeEnd('e4x');

console.time('+')
for(var i=0;i<1000;i++)
  '1+1='+(1+1);
console.timeEnd('+');

e4x: 14ms
+: 4ms
e4xのほうが遅いのだけど、1000回やって14msだから気にするほどではない。+でたくさん連結する場合はむしろE4Xのほうが速い。

関連:

  1. 404 Blog Not Found:javascript - HereDocよりInterpolation
  2. ローカル変数も展開したい! - sawatの日記