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



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

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被解释为块,内部的语句被执行。

您的代码可以归结为以下内容。

a = 5,
b = 6

由于您没有任何像varletconst这样的声明,因此您正在设置一个全局变量ab

如果只通过赋值(不使用letconstvar或作为函数参数(来声明变量,则它是全局的。

标签不起任何作用,因为您没有从中循环到continue(或类似内容(。

这些块什么也不做,因为您没有使用letconst,它们将变量范围限定为块。

最新更新