Ситуация: вы пишете сервис, который хранит данные на сервере, и используете для этого JSON. Одна из переменных отвечает за пользователя, который обращается к серверу. Так как JSON работает с объектами, которые состоят из пары «НазваниеПоля: Значение», вы сразу создаёте такой объект, где сразу прописываете нужно пользователя:
var obj = { user = 'Mike' };
Но при запуске скрипта он падает с ошибкой:
❌ SyntaxError: missing : after property id
Что это значит: JavaScript думает, что вы объявляете значение какого-то поля в объекте, поэтому ожидает двоеточия после названия поля. В нашем случае оно должно быть вместо второго знака равенства: var obj = { user: 'Mike' };
Когда встречается: чаще всего такая ошибка появляется при неправильном объявлении объекта. Например, мы решили не вручную указать название поля, а собрать его из каких-то других частей:
var obj = { 'user'+userID: 'Mike' };
Программист думает, что JavaScript сложит строку и переменную userID, а результат использует как название поля. Но это так не работает.
Как исправить ошибку SyntaxError: missing : after property id
Эта ошибка появляется при неправильном объявлении объекта с какими-то свойствами, поэтому вам нужно:
- Перепроверить синтаксис объявления объекта. Если вы не хотели объявлять объект, разобраться, почему JavaScript думает иначе.
- Проверить, всё ли в порядке с двоеточием, может, вы и правда его пропустили.
- Посмотреть, у каждого ли ключа или поля есть нужное значение.
- Убрать все математические, логические и любые другие операции из описания объявления переменной.
Попробуйте сами
Этот код даёт ту же самую ошибку. Найдите, что в нём не так, и попробуйте это исправить:
$("#autocomplete").autocomplete({
var arr = ["c++", "java", "php", "coldfusion", "javascript", "asp", "ruby"]
source: arr,
close: function () {
var val = $('input#autocomplete').val()
if ($.inArray(val, arr) > -1) {
$('body').append(val);
}
}
});