Что означает ошибка SyntaxError: missing : after property id

Ситу­а­ция: вы пише­те сер­вис, кото­рый хра­нит дан­ные на сер­ве­ре, и исполь­зу­е­те для это­го 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

Эта ошиб­ка появ­ля­ет­ся при непра­виль­ном объ­яв­ле­нии объ­ек­та с какими-то свой­ства­ми, поэто­му вам нуж­но:

  1. Пере­про­ве­рить син­так­сис объ­яв­ле­ния объ­ек­та. Если вы не хоте­ли объ­яв­лять объ­ект, разо­брать­ся, поче­му JavaScript дума­ет ина­че.
  2. Про­ве­рить, всё ли в поряд­ке с двое­то­чи­ем, может, вы и прав­да его про­пу­сти­ли.
  3. Посмот­реть, у каж­до­го ли клю­ча или поля есть нуж­ное зна­че­ние.
  4. Убрать все мате­ма­ти­че­ские, логи­че­ские и любые дру­гие опе­ра­ции из опи­са­ния объ­яв­ле­ния пере­мен­ной.

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

Этот код даёт ту же самую ошиб­ку. Най­ди­те, что в нём не так, и попро­буй­те это испра­вить:

$("#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);
    }
  }
});