Пара «фиктивных» букв объекта JavaScript, завершающая «фиктивную» пару

#javascript

#javascript

Вопрос:

При работе с объектными литералами в JavaScript я часто сталкиваюсь с проблемами синтаксиса вокруг последней пары метка / значение, поскольку для этого не требуется конечная запятая. Я вставляю новое значение и неизбежно забываю разделяющую запятую.

 .draggable({
    containment: "parent",
    opacity: 0.50  // <- missing comma
    revert: true   // new pair
});
  

Итак, ради моего здравомыслия, было бы разумно всегда иметь фиктивную пару в конце? Кажется, это работает, и теперь все вставленные пары получают конечную запятую. Существуют ли другие соглашения? Двойная кавычка блестящая или идиотская? Обратная связь, пожалуйста! Спасибо.

 .draggable({
    containment: "parent",
    opacity: 0.50,
    "": null       // dummy pair
});
  

Комментарии:

1. Когда происходит вставка после фиктивной пары?

2. Я бы всегда поддерживал фиктивную пару в качестве последней пары. Все «реальные» пары получают конечную запятую.

Ответ №1:

Нет.

Это просто глупо.

Вместо этого вы хотите использовать инструменты качества кода, такие как jslint и jshint. Если вы подключите их к предварительной фиксации в системе управления версиями или в безопасном механизме текстового редактора, вы никогда не пропустите эти ошибки.

В качестве альтернативы вы можете попробовать написать свой код в стиле Айзекса

 var x = { containment: "parent"
        , opacity: 0.50
        , revert: true
        };
  

Комментарии:

1. Isaacs сработал бы, но все, что я знаю — если я увижу подобный код в обзоре кода — я сойду с ума … но это только мои особенности … :):)

2. У @ZenMaster isaacs есть целое руководство по стилю, это странный стиль, но он интересный. До тех пор, пока все согласны и подтверждают руководство по стилю X, тогда на самом деле не имеет значения, что такое X.

3. Спасибо, ребята… Мне не нравится стиль Айзекса. Теперь я остановлю свою глупость.

4. @Raynos не открывать дискуссию по вопросу с ответом, но соответствие — не единственная важная вещь — читаемый код так же важен, а айзекс, для меня, нет.

Ответ №2:

Вы можете создать пустой объект, а затем заполнить его данными. Это позволило бы избежать использования запятых и является последовательным.

 var obj = {};
obj.containment = parent;
obj.opacity = 0.50;
.draggable(obj);
  

Ответ №3:

В общем, я часто работаю с ассоциативными массивами, поэтому я не обязательно пропускаю последнюю запятую. Если вы хотите использовать его просто, ознакомьтесь с Coffee Script.

Ваш код будет выглядеть следующим образом:

 draggable
  foo:
    key: value
  bar:
    key: value
  

и скомпилировать в:

 draggable({
  foo: {
    key: value
  },
  bar: {
    key: value
  }
});