刚刚打开了客户端的javascript文件,第一行就是这样:
{
var s_account="blog";
}
我没有得到。通常,根据我的经验,花括号缠绕一个函数......
function welcome(){ ...
...或 json JavaScript 对象
var attributes = { this : "that...
有谁能告诉我为什么在他们之前或之后没有文字的花括号?它做了什么/有什么意义呢?
答案 0 :(得分:12)
除非你给它贴上标签,否则它就是一块并且毫无意义:
block: {
var s_account="blog";
break block;
alert("not executed");
}
答案 1 :(得分:7)
有谁能告诉我为什么在他们之前或之后没有文字的花括号?它做了什么/有什么意义呢?
在Javascript中没有重要的意义。它的行为与代码只是
完全相同var s_account="blog";
推测
在具有块范围的其他语言中,这可能会限制变量的范围,但由于JS没有该功能(无论好坏),没有控制结构或功能的大括号基本上没有意义并被忽略。 / p>
很可能这段代码是从已删除的函数或if语句中遗留下来的。它绝对不是一种可以复制的模式。
答案 2 :(得分:7)
在我看来,做这样的事情的唯一合乎逻辑的理由是作为一种组织技术。
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都允许您折叠“私有成员”阻止并将其排除在外。
答案 3 :(得分:6)
它被称为block statement。它允许您分组表达式。它通常与if
和while
等控制结构一起使用,但也可以单独使用。
由于JavaScript没有块范围,因此代码在相同的范围内运行(就好像{}
不存在一样)。
示例:
{
var s_account="blog";
}
console.log(s_account);
工作正常。
答案 4 :(得分:3)
这是一个封锁声明。块语句具有多个目的,该代码没有使用任何目的(除了可能将内容分组在一起as Shmiddty suggested之外)。 (实际上,我会在该代码中说,它们起了反作用,因为对于许多使用所有变量声明都以块为范围的语言来使用JavaScript的人来说,他们给人的印象是变量的作用域是块,不是。)
使用它可以具有:
let
,const
和class
的范围如果该代码使用的是let
,const
或class
,则该块将确定结果标识符的范围,因为let
,const
和{{ 1}} 在JavaScript中具有作用域范围。因此输出class
:
"bar"
但这会引发{
var foo = "bar";
}
console.log(foo);
,因为ReferenceError
的作用域是该块:
foo
与Esailija points out一样,如果它被标记并使用{
let foo = "bar";
}
console.log(foo);
,则中断将尽早退出该块。
block语句的最常见用法是将附加到流控制语句的语句(例如break
和if
)组合在一起。在这个非常典型的for
中:
if
... if (something) {
doThis();
doThat();
}
不是{}
的部分(您可以不使用if
来编写if
),它们是重新附加到{}
上的阻止语句。
答案 5 :(得分:0)
快速添加。 在诸如Visual Code之类的IDE中,放置花括号实际上会创建带有“下拉”箭头的可视块,从而使您只需单击即可完全隐藏部分代码。 它有助于代码组织。 在使用大量CSS创建HTML元素时会使用它。 由于它不影响代码执行,因此非常有用。