Мне нужно написать URL в javascript, но я не знаю, должен ли я написать & для & символа.
<script type="text/javascript"> <![CDATA[ var link = 'http://example.com/query?id=1' . '&ref=' . document.referrer; ]]></script>
Или
<script type="text/javascript"> <![CDATA[ var link = 'http://example.com/query?id=1' . '&ref=' . document.referrer; ]]></script>
Внутри CDATA, нет необходимости экранировать &, и его нельзя экранировать в результирующем URL, поэтому первый из них правильный.
CDATA
&
Правильно будет
<script type="text/javascript"> <![CDATA[ var link = 'http://example.com/query?id=1' + '&ref=' + encodeURIComponent(document.referrer); ]]></script>
Вы не должны использовать escape-символы XML в разделах CDATA. Вот и весь смысл использования их в первую очередь.
Но обратите внимание на кодировку URL, которую вы забыли. И конкатенация строк JavaScript работает с +, а не ..
+
.