javascript如何允许对象键类型语法而不在文本中包含ir和变量声明?

javascript如何允许对象键类型语法而不在文本中包含ir和变量声明?,javascript,object-literal,Javascript,Object Literal,在chrome控制台或inside script tag中运行这些语句时,我发现下面我认为无效的语法正在运行,并且所有变量都被全局公开,我理解这可能是因为大括号被解释为块,但关键是:前面是什么让我困惑。但我不知道为什么,我正在寻找解释 foo: { a = 5, b = 6 } console.log(a) output ---> 5 console.log(b) output ---> 6 foo: {

在chrome控制台或inside script tag中运行这些语句时,我发现下面我认为无效的语法正在运行,并且所有变量都被全局公开,我理解这可能是因为大括号被解释为块,但关键是:前面是什么让我困惑。但我不知道为什么,我正在寻找解释

    foo: {
      a = 5,
      b = 6
    }

    console.log(a) output --->  5
    console.log(b) output --->  6


    foo: {
      a = 5;
      b = 6;
    }

    console.log(a) output --->  5
    console.log(b) output --->  6


    foo: {
      a: 5;
      b: 6;
    }

    console.log(a) output --->  5
    console.log(b) output --->  6

这是因为foo:被解释为标签,而“ObjectLiteral”get被解释为block,其中的语句被执行

您的代码可以归结为以下几点

a = 5,
b = 6

由于您没有任何声明,如
var
let
const
,您正在设置全局变量a和b

如果您仅通过赋值来声明变量(而不使用
let
const
var
或作为函数参数),那么它是全局变量

标签不起任何作用,因为您没有要从中继续的循环


块不起任何作用,因为您没有使用将变量作用于块的
let
const

感谢@jornsharpe提供的参考,我正在寻找相同的参考,但找不到它。