Uncaught SyntaxError: Unexpected identifier — что это означает?
medium

Uncaught SyntaxError: Unexpected identifier — что это означает?

Вредная ошибка, которую легко исправить.

Допустим, у нас есть такой код на JavaScript:

var backgrounds=array();
backgrounds[0]="/img/back_web.png";
backgrounds[1]="/img/back_web2.png";
document.getElementById('fon').style.background='url('backgrounds[1]') bottom no-repeat';

После запуска в браузере код падает с ошибкой:

❌ Uncaught SyntaxError: Unexpected identifier

Это значит, что в коде появилась неизвестная переменная, команда или объект, о которых браузер не знает. Он не понимает, что за слово или символ он встретил, поэтому выводит такое сообщение.

👉 Скорее всего, в коде просто опечатка. Но имеет смысл проверить и другие возможности.

Что делать с ошибкой Uncaught SyntaxError: Unexpected identifier

Как и с большинством ошибок, браузер сообщает нам номер строки, где произошла ошибка. У нас это будет четвёртая строка:

Если нажмём на номер строки с ошибкой, браузер покажет нам подробности:

Мы видим, что браузер не понял, что за команды идут после 'url(', поэтому подчеркнул их все красной линией. Похоже, он подумал, что мы хотели сообщить элементу fon стиль фона в виде текста url( — и всё, дальше закрылась кавычка. И что происходит дальше в коде, интерпретатору JavaScript непонятно. «Вы же закрыли кавычку, что вам от меня нужно?»

Конкретно в нашем примере программист пытается установить фон какого-то элемента, а в массиве backgrounds у него лежат адреса и названия файлов с фоном. Программист пытается подставить содержимое backgrounds внутрь инструкции CSS, но для этого нужно использовать плюсы (склеить строку). Без плюсов это всё считается как одна большая опечатка.

Правильно — вот так:

document.getElementById('fon').style.background='url(' + backgrounds[1] + ') bottom no-repeat';

Но это конкретно в случае нашего кода. Unexpected identifier может появиться и в других случаях:

  • допущены опечатки;
  • лишние символы там, где их быть не должно;
  • наоборот, пропустили что-то нужное (например, плюс или запятую);
  • используется переменная или функция, которая не была объявлена выше;
  • пропущенная точка с запятой.

Попробуйте сами

Каждый из этих фрагментов кода даст ошибку Uncaught SyntaxError: Unexpected token. Попробуйте это исправить.

for (i = 0 i < 64; i += 4) {

}
for (val i = 0 i < 64; i += 4
{

}
function hex(x) {
  for (var i = 0; i < x.length; i++) {
    x i = rhex(x[i]);
  }
  return x.join('');
}

Обложка:

Даня Берковский

Корректор:

Ирина Михеева

Вёрстка:

Маша Климентьева

Получите ИТ-профессию
В «Яндекс Практикуме» можно стать разработчиком, тестировщиком, аналитиком и менеджером цифровых продуктов. Первая часть обучения всегда бесплатная, чтобы попробовать и найти то, что вам по душе. Дальше — программы трудоустройства.
Вам может быть интересно
medium
[anycomment]
Exit mobile version