SyntaxError: missing ; before statement
Сообщение
SyntaxError: Expected ';' (Edge) SyntaxError: missing ; before statement (Firefox)
Тип ошибки
Что пошло не так?
Отсутствует точка с запятой (;
). Инструкции JavaScript должны заканчиваться точкой с запятой. В некоторых случаях имеет место автоматическая вставка точки с запятой (ASI), но в данном случае необходимо её поставить, чтобы JavaScript мог правильно обработать исходный код.
Часто эта ошибка является следствием другой ошибки, например, некорректного экранирования строк или неправильного использования var
. Кроме того, где-то может быть слишком много скобок. Тщательно проверьте синтаксис при возникновении этой ошибки.
Примеры
Неэкранированные строки
Эта ошибка может легко возникнуть, если не экранировать строку правильным образом, из-за чего JavaScript будет рассматривать это место как конец строки. Например:
js
var foo = 'Tom's bar';
// SyntaxError: missing ; before statement
Можно использовать двойные кавычки или экранировать апостроф:
js
var foo = "Tom's bar";
var foo = 'Tom\'s bar';
Объявление свойств через var
Нельзя объявить свойство объекта или массива с помощью var
.
js
var obj = {};
var obj.foo = 'привет'; // SyntaxError missing ; before statement
var array = [];
var array[0] = 'всем'; // SyntaxError missing ; before statement
Ключевое слово var
необходимо опустить:
js
var obj = {};
obj.foo = "привет";
var array = [];
array[0] = "всем";
Неправильные ключевые слова
При переходе с другого языка программирования частой проблемой является использование ключевых слов, которые в JavaScript имеют другое значение или ничего не означают.
js
def print(info){
console.log(info);
}; // SyntaxError missing ; before statement
Вместо def
используйте function
:
js
function print(info) {
console.log(info);
}