16

刚刚打开了一个客户端的 javascript 文件,第一行是这样的:

{
    var s_account="blog";
}

我不明白。通常,根据我的经验,花括号会包裹一个函数......

function welcome(){ ...

...或一个json JavaScript对象

var attributes = { this : "that...

谁能告诉我为什么大括号之前或之后没有文字?它有什么作用/有什么意义?

4

6 回答 6

16

这是一个障碍,完全没有意义,除非你给它贴上标签:

block: {
    var s_account="blog";
    console.log("executed");
    break block;
    console.log("not executed");
}

于 2013-08-08T15:37:59.013 回答
11

在我看来,这样做的唯一合乎逻辑的原因是作为一种组织技术。

function banana(){
    // private members
    {
        var foo = "foo",
            bar = "bar",
            baz = "baz";

        function bux(){
            console.log("bux");
        }
    }

    // public members

    this.fin = "fin";
    this.fang = "fang";
    this.foom = "foom";

    this.shamalamadingdong = function(){
        bux();
    };
}

此外,大多数 IDE 将允许您折叠“私人成员”块并将其排除在外。

于 2013-08-08T15:44:09.383 回答
8

这是一个块语句。块语句有多种用途,该代码没有使用任何一种(除了可能按照 Shmiddty 的建议将内容组合在一起)。(事实上​​,我会在代码中说它们适得其反,因为对于许多从所有变量声明都是块作用域的语言开始使用 JavaScript 的人来说,它们给人的印象是变量的作用域是块,它不是。)

它可以具有的用途:

范围let, const, 和class

如果该代码使用letconstclass,则该块将限定结果标识符,因为letconst和在 JavaScriptclass 中是块范围的。所以这个输出"bar"

{
    var foo = "bar";
}

console.log(foo);

但这会抛出一个ReferenceError因为foo它的作用域是块:

{
    let foo = "bar";
}

console.log(foo);

提供一个块来打破

正如Esailija 指出的那样,如果它被标记并使用break,则 break 将提前退出块。

附加到流控制语句的分组语句

块语句最常见的用途是将附加到流控制语句(如ifand )的语句组合在一起for。在这个相当典型的if

if (something) {
    doThis();
    doThat();
}

...{}它们不是(您可以不使用编写)的一部分,它们是附加到.ifif{}if

于 2019-08-06T12:24:07.170 回答
7

谁能告诉我为什么大括号之前或之后没有文字?它有什么作用/有什么意义?

在 Javascript 中对它们没有意义。它的行为就像代码只是

var  s_account="blog";
猜测

在其他具有块范围的语言中,这可能会限制变量的范围,但由于 JS 没有该功能(无论好坏),没有控制结构或函数的大括号本质上是没有意义的并且被忽略了。

然而,这段代码很可能是从已删除的函数或 if 语句中遗留下来的。这绝对不是要复制的模式。

于 2013-08-08T15:34:59.847 回答
7

它被称为块语句。它允许您对表达式进行分组。它通常与 and 等控制结构if一起while使用,但也可以单独使用。

由于 JavaScript 没有块作用域,因此代码在同一作用域中运行(就好像{}它们不存在一样)。

例子:

{
    var s_account="blog";
}

console.log(s_account);

这很好用。

于 2013-08-08T15:32:07.363 回答
0

快速添加。在像 Visual Code 这样的 IDE 中,放置花括号实际上会创建一个带有“下拉”箭头的可视块,只需单击一下即可完全隐藏部分代码。它有助于代码组织。我在使用大量 CSS 创建 HTML 元素时使用它。由于它不影响代码执行,因此非常有用。

于 2020-05-02T16:19:38.543 回答