Мне недавно пришлось исправить ошибку, которая иногда проявлялась в Internet Explorer. Ошибка заключалась в том, что иногда синтаксический анализатор подавлялся по коду вродеЯвляется <! - действительным javascript?
<script type="text/javascript">
<!-- // comments -->
/*...*/
</script>
Это мы исправили исправлением комментария. Мой вопрос: есть ли «<!--
» действительный код javascript, или нет? Я попытался проверить его с помощью firebug, и он говорит только «Undefined». JSFiddle не волновала. IE только задыхался от него в некоторых случаях (перезагрузка рассматриваемой страницы будет отображаться в результате задействованного скрипта).
Зная, что по историческим причинам комментарий HTML внутри js может быть действительным в зависимости от его точной позиции, а фаза луны действительно полезна, меня больше интересуют ответы типа «var <!--
foo is valid js code , но <!--
сама по себе не является вот почему:. ...»
я сделал некоторый анализ в поджигатель:
var x = 2;
var y = 3;
var z = 0;
console.log(x);
console.log(y);
y<!--x;
console.log(x);
console.log(y);
z = y<! --x;
console.log(x);
console.log(y);
console.log(z);
в результате следующих действий:
2
3
2
3
1
3
false
Интересна разница между первой и второй попытками.
Затем я попытался
z = (y <!--x);
console.log(z);
Что не удалось с
SyntaxError: missing) in parenthetical
'foo
Это может быть связано с дополнительным пространством перед комментарием HTML, если это не опечатка. Некоторые парсители Javascript могут игнорировать комментарии HTML * прямо в начале * скрипта. –
@cookiemonster 'ReferenceError: foo не определен' – Izkata