Почему строка, начинающаяся с "->", не выдает ошибку в Javascript? - PullRequest
0 голосов
/ 23 января 2019

Рассмотрим следующие три строки Javascript.

console.log(1);
--> console.log(2);
console.log(3);

Я бы ожидал, что это вызовет Syntax Error, вероятно, что-то вроде Unexpected token --.

Вместо этого браузеры, кажется, принимают код и просто игнорируют вторую строку, производя вывод:

› 1
› 3

Я пытался вставить фрагмент в консоли Chrome, Safari и Firefox. Все они ведут себя одинаково. Что происходит?

Ответы [ 3 ]

0 голосов
/ 23 января 2019

Бездействие с консолью, кажется, доказывает случай Нины

-->
   undefined
typeof -->
   Uncaught SyntaxError: Unexpected token >
--> = "foo"
   undefined
-->
   undefined
--<
   Uncaught SyntaxError: Unexpected token <
<--
   Uncaught SyntaxError: Unexpected token <
<!--
   undefined
<!-- foo -->
   undefined

Кажется, эти ключевые слова всегда возвращают неопределенное значение.

0 голосов
/ 23 января 2019

По-видимому, ECMAScript официально разрешает "HTML-подобные" комментарии :

B.1.3 HTML-подобные комментарии

Синтаксис исемантика 11.4 расширена следующим образом, за исключением того, что это расширение не разрешено при синтаксическом анализе исходного кода с использованием символа цели Модуль:

HTMLCloseComment::
    WhiteSpaceSequence opt  SingleLineDelimitedCommentSequence opt  -->  SingleLineCommentChars opt

Что предполагает, что все, что следует после -->, следует рассматривать каккомментарии.

0 голосов
/ 23 января 2019

Это часть HTML-комментария для более старого браузера с шаблоном, имеющим части Javascript в браузерах, которые не поддерживают тег <script>.

<script>
<!--

// some code 

-->
</script>
...