javascript如何在不包含ir且不包含变量的情况下允许对象键类型语法?

问题描述 投票:-1回答:2

当在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

javascript object-literal
2个回答
1
投票

这是因为foo:被解释为标签,而您的“ ObjectLiteral” get被解释为块,并且内部的语句被执行。

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

a = 5,
b = 6

由于没有像varletconst这样的声明,因此您要设置全局变量ab


1
投票

如果仅通过分配变量来声明变量(不使用letconstvar或作为函数参数,则该变量是全局的。

标签不执行任何操作,因为您没有从中循环到continue(或类似的位置)。

这些块什么都不做,因为您没有使用letconst来将变量的作用域限制为块。

© www.soinside.com 2019 - 2024. All rights reserved.