JavaScript文字列の動的生成におけるエスケープ

JavaScript文字列を動的生成する」と一言で言っても、例えば

<html>...
<script>
   // HTML内のscript要素内に生成
   var s = "ここに動的生成される";
</script>

だったり、

<div onclick='foo("ここに動的生成される");'>

だったり、

<script src="external.js"></script>
// external.js
var s = "ここに動的生成される";

だったり、さらに複雑な組み合わせだったりといろんな状況があって、基本的には「JavaScriptとしてのエスケープ」に加えてその外側の(場合によってはネストしている)コンテキストに応じたエスケープが必要、という話。
で、面倒だったら

var s = decodeURIComponent( "ここに動的生成される" );

にして、生成する側はURLエンコードしとけばだいたい大丈夫!知らんけど!