javascript 如何允许对象键类型语法而不在文字中包含 ir 以及其中的变量声明?
How javascript allows object key type syntax without including ir inside a literal and also variable declaration inside it?
虽然 运行 这些语句在 chrome 控制台或内部脚本标记中,但我发现以下我认为无效的语法正在工作,并且所有变量都在全局公开,我理解可以由于花括号被解释为块,但那个关键:前面是让我困惑的地方。但我不确定为什么,正在寻找解释。
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
因为您没有像 var
、let
或 const
这样的声明,所以您正在设置一个全局变量 a和 b
如果你只是通过赋值来声明一个变量(不使用 let
、const
、var
或作为函数参数),那么它是全局的。
标签什么都不做,因为你没有循环到 continue
(或类似的)。
这些块什么都不做,因为您没有使用 let
或 const
,它们会将变量的范围限定为块。
虽然 运行 这些语句在 chrome 控制台或内部脚本标记中,但我发现以下我认为无效的语法正在工作,并且所有变量都在全局公开,我理解可以由于花括号被解释为块,但那个关键:前面是让我困惑的地方。但我不确定为什么,正在寻找解释。
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
因为您没有像 var
、let
或 const
这样的声明,所以您正在设置一个全局变量 a和 b
如果你只是通过赋值来声明一个变量(不使用 let
、const
、var
或作为函数参数),那么它是全局的。
标签什么都不做,因为你没有循环到 continue
(或类似的)。
这些块什么都不做,因为您没有使用 let
或 const
,它们会将变量的范围限定为块。