◆ `` のように " と ' の両方があるときにエスケープしなくて済む

いまでこそ template string が使えて " も ' もエスケープなしで使えますが 使えないブラウザではこういうのを書くのはつらいです
var attr = `onclick="alert('abc')"`
HTML などを書くときにはよく出会う 両方のクオートが必要な場合です
これを " と ' だけで書くと
var html = 'onclick="alert(\'abc\')"'
エスケープは見づらいし 複雑なのになってくるとつらいですよね

自分で
var attr = extract('onclick="alert(${val})"', {val:"'abc'"})
と書けるような関数を作ったり ヒアドキュメントもいいですが もっと手軽にやりたいです

PHPなどのようなヒアドキュメントなら十分ありなのですが JavaScript ではムリヤリやることになります
http://var.blog.jp/archives/46692825.html


そこで 正規表現リテラルです
/ で囲むので `` のように シングル・ダブルのどっちのクオートもエスケープいらずです
var attr = /onclick="alert('abc')"/.source

これでできます

.source より関数のほうがいいならこんな感じです
function reg2str(re){
return re.source
}
var attr = reg2str(/onclick="alert('abc')"/)


一見すごく便利に見えるのですが実はそこまで役立たなかったりします
" も ' も使ってる時は大抵 HTML を書いてる時だと思います
HTML だと
<a>~</a>
という形が基本ですよね

よくみると 「/」 が使われてるんです
これのせいで 結局エスケープ必要になることが多いので微妙なとこです
正規表現リテラルの記号に 「#」 とかも使えたらよかったのですけどね

とはいっても 使えるケースもそこそこあるので 古い IE 向けな JavaScript 書くときには覚えておくと役立つかもですよ