Разница между указанными и не указанными свойствами объекта JavaScript

Есть ли разница между цитированными и некотируемыми именами/именами объектов JavaScript?

Например, в чем разница между этими двумя:

var obj1 = {
  property1 : "Value 1",
  method1 : function() {
    return true;
  }
};

var obj2 = {
  "property1" : "Value 1",
  "method1" : function() {
    return true;
  }
};

Ответ 1

В JavaScript нет никакой разницы. Однако вам придется указывать имена свойств, которые являются зарезервированными словами (например, class), или именами, которые содержат недопустимые символы (например, first-name).

Ответ 2

До ES 3 вам нужно указать зарезервированные слова языка (новый, по умолчанию, класс, и т.д.). Однако в новой версии это будет лишним.

Но так как ES 5 еще недостаточно поддерживается, вам нужно придерживаться всех зарезервированных слов.

Если вы не хотите запоминать полный список слов, вам лучше всего процитировать все.

Дополнительно: поэтому у вас нет свойств float и class для элемента. Вместо этого вы должны использовать cssFloat/styleFloat и className.

Другое дополнение - вам нужно процитировать каждый ключ в строке JSON. Причина в том, что они хотели, чтобы он был независимым от языка, чтобы не вмешиваться в такие глупые ограничения, как в ES3.