Простые JavaScript_инструкции обычно завершаются символами точки с запя_ той (;), как в C, C++ и Java. Точка с запятой служит для отделения инструкций друг от друга. Однако в JavaScript точку с запятой можно не ставить, если каж_ дая инструкция помещается в отдельной строке. Например, следующий фраг_ мент может быть записан без точек с запятой:
a = 3; b = 4;
1 Для русскоязычных программистов это означает, что а) русскоязычный текст мо_ жет появляться только в комментариях и в строковых литералах, предназначен_ ных непосредственно для вывода; б) такие тексты представляются в кодировке UTF_16 (Unicode – это единая система связывания символов любого языка с одно_ значным численным кодом, а для кодирования этого численного кода могут при_ меняться различные кодировки, например UTF_8, UTF_16 и др.); в) все остальные лексемы программы – операторы, имена переменных и т. д. – должны состоять из латинских литер; это достаточно обычная и привычная практика и для других языков программирования. – Примеч. науч. ред.
2.5. Комментарии
Однако если обе инструкции расположены в одной строке, то первая точка с за_ пятой должна присутствовать обязательно:
a = 3; b = 4;
Пропуск точек с запятой нельзя признать правильной практикой программиро_ вания, и поэтому желательно выработать привычку их использовать.
Теоретически JavaScript допускает переводы строк между любыми двумя лексе_ мами, но привычка синтаксического анализатора JavaScript автоматически вставлять точки с запятой за программиста приводит к некоторым исключени_ ям из этого правила. Если в результате разделения строки программного кода та ее часть, которая предшествует символу перевода, оказывается законченной ин_ струкцией, синтаксический анализатор JavaScript может решить, что точка с запятой пропущена случайно, и вставить ее, изменив смысл программы. К по_ добным требующим внимания ситуациям относятся, среди прочих, инструкции return, break и continue (описанные в главе 6). Рассмотрим, например, следую_ щий фрагмент:
return true;
Синтаксический анализатор JavaScript предполагает, что программист имеет в виду следующее:
return;
true;
Хотя на самом деле программист, видимо, хотел написать
return true;
Вот случай, когда следует быть внимательным, – данный код не вызовет синтак_ сической ошибки, но приведет к неочевидному сбою. Похожая неприятность возникает, если написать:
break outerloop;
JavaScript вставляет точку с запятой после ключевого слова break, что вызывает синтаксическую ошибку при попытке интерпретировать следующую строку. По аналогичным причинам постфиксные операторы ++ и __ (см. главу 5) должны располагаться в той же строке, что и выражения, к которым они относятся.