object/class 中的函数声明

function declaration inside object/class

我有以下问题:在 Node/Javascript 为什么这个函数声明在对象或 class 中是错误的??

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

第一个函数声明x()原因

  function x() {
           ^

SyntaxError: Unexpected identifier

我不明白为什么我不能在对象或 class 中使用 function 关键字,使用 function x() 或只是 [= 有什么区别13=],只是 x() 工作正常,但在它前面添加 function 关键字 - 导致上述问题。为什么 ?

in Node/Javascript why this function declaration is wrong inside an object or a class??

当然错了,在JavaScript中一个object是一对key/values,用逗号隔开。使用你的代码,你打破了这种语法,因为你没有在你的情况下声明 属性 ,你需要在编写 function x().

之前指定密钥

如果你参考MDN Object initializer reference你可以看到:

An object initializer is a comma-delimited list of zero or more pairs of property names and associated values of an object, enclosed in curly braces ({}).

如果您检查 New notations in ECMAScript 2015 section of Docs,您会发现写 function x()x()x().

之间的区别

并且根据 docs these are possible Method definitions 语法:

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

您需要在 Javascript 中为它们的对象分配一个键,第二个可以工作,因为您有一个分配给它的键是 bar,而在第一个中则没有。尝试在函数声明之前添加密钥,如下所示:

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