为什么JavaScript解析器接受JSON作为函数体?

Tho*_*unk 10 javascript json

前几天,我遇到了一些奇怪的代码:

var OrderSupplement = function() {
      oid: null;
      code: "";
      description: "";
      startdate: "";
      enddate: "";
      gender: null;
      cardowner: null;
      box: null;
      divisor: 0;
      created: null;
      createdBy: "";
};
Run Code Online (Sandbox Code Playgroud)

代码的意图是明确的对我说:这是试图定义一个构造函数,以创建一个实例OrderSupplement.

我对这种语法感到困惑.

编写代码的伙伴表示它运行良好 - 虽然它显然没有 ; 至少它不应该是什么.他实例化一个新的实例OrderSupplement和如设置OID到一个非空值,并在以后恢复它.当然,在设置之前检索一个值会揭开错误.

上面代码的效果如下:

var OrderSupplementJson = function() {}
Run Code Online (Sandbox Code Playgroud)

我的问题是:

为什么上面的代码被接受并且不会抛出任何类型的(语法)错误?

Den*_*ret 13

因为oid:定义了标签.

它在语法上是正确的,但没有任何有用的东西.这显然是一个错误.