объявление функции внутри объекта / класса - PullRequest
0 голосов
/ 13 сентября 2018

У меня следующий вопрос: в Node / Javascript, почему это объявление функции неверно внутри объекта или класса ??

var obj = {
  function x() {
    /* code */
  },
  bar: function() {
    /* code */
  }
};

первое объявление функции x() причина

  function x() {
           ^

SyntaxError: Unexpected identifier

Я не понимаю, почему я не могу использовать ключевое слово function внутри объекта или класса, какая разница при использовании function x() или просто x(), просто x() работает нормально, но добавление ключевого слова function перед ним - вызывает вышеуказанную проблему. Зачем ?

Ответы [ 2 ]

0 голосов
/ 13 сентября 2018

Вам необходимо назначить ключ в Javascript их объектам, второй работает, потому что у вас есть назначенный ключ, который является баром, а в первом нет. Попробуйте добавить ключ перед объявлением функции, например:

var obj = {
  foo:function x() {
    /* code */
  },
  bar: function() {
    /* code */
  }
};
0 голосов
/ 13 сентября 2018

в Node / Javascript, почему это объявление функции неверно внутри объекта или класса ??

Конечно, это неправильно, в JavaScript object - это пары ключ / значение, разделенные запятой.С помощью своего кода вы нарушаете этот синтаксис, потому что вы не объявляете свойство в вашем случае, вам нужно указать ключ перед записью function x().

Если вы ссылаетесь на MDN Инициализатор объекта ссылка вы можете видеть, что:

Инициализатор объекта - это разделенный запятыми список из нуля или более пар имен свойств и связанных значений объекта, заключенных в фигурныефигурные скобки ({}).

И если вы проверите Новые записи в ECMAScript 2015 разделе Документов , вы увидите разницу между написанием function x(), x() или просто x().

И в соответствии с документами возможны Определения методов синтаксис:

var o = {
  property: function (parameters) {},
  get property() {},
  set property(value) {}
};
...