代码之家  ›  专栏  ›  技术社区  ›  ddor254

对象/类内的函数声明

  •  0
  • ddor254  · 技术社区  · 6 年前

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

    第一个函数声明 x()

      function x() {
               ^
    
    SyntaxError: Unexpected identifier
    

    我不明白为什么我不能使用 function function x() 或者只是 x() x() 工作正常,但添加 前面的关键字-导致上述问题。为什么?

    2 回复  |  直到 6 年前
        1
  •  1
  •   cнŝdk    6 年前

    在Node/Javascript中,为什么这个函数声明在对象或类中是错误的??

    当然错了,用JavaScript来说 object 是成对的键/值,用逗号分隔。在代码中,您破坏了这种语法,因为您没有在案例中声明属性,所以在编写之前需要指定键 function x() .

    MDN Object initializer reference 你可以看到:

    包含在 大括号({})。

    New notations in ECMAScript 2015 section of Docs 你会看到写作和写作的区别 函数x() , x() x() .

    根据调查 docs 这些都是可能的 Method definitions 语法:

    var o = {
      property: function (parameters) {},
      get property() {},
      set property(value) {}
    };
    
        2
  •  2
  •   Nelson Colon    6 年前

    您需要在Javascript中为它们的对象分配一个键,第二个键起作用,因为您为它分配了一个键,即bar,而第一个键不是。尝试在函数声明之前添加键,如下所示:

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