javascript如何允许对象键类型语法而不在文本中包含ir和变量声明?
在chrome控制台或inside script tag中运行这些语句时,我发现下面我认为无效的语法正在运行,并且所有变量都被全局公开,我理解这可能是因为大括号被解释为块,但关键是:前面是什么让我困惑。但我不知道为什么,我正在寻找解释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: {
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提供的参考,我正在寻找相同的参考,但找不到它。