在Javascript中,您可以拥有孤独的代码块,即代码块没有if
,function
或类似的代码块,在代码中任意放置,如下所示:
var a = 3,
b = 4;
{
a = 50;
b = 50;
}
alert(a + b); //alerts 100
我知道其他一些语言(我认为C ++会这样做),并且它们将它用于范围控制:在孤独的代码块内声明的变量不能在它之外访问。但由于Javascript具有函数作用域而不是块作用域,因此必须使用自执行函数(function(){})()
来实现相同的效果。
这个结构有目的吗?你见过有人用它吗?规格是否提到了?这只是语法的一个副作用,它有一些关于代码块的一般规则吗?
答案 0 :(得分:9)
正如我在搜索How are labels used with statements that are not a loop?的答案后发现的那样,孤独的代码块可能与标签有关:
myLabel:
{
for(x in y) {
break myLabel;
}
}
不仅会破坏循环,还会破坏外部代码块。
答案 1 :(得分:6)
更新(因为此问题在Google上显示为“javascript代码块”):
通过介绍ECMAScript 6中的let
关键字,代码块也可用于限制变量范围。
{
let x = 20;
alert(x) // 20
}
alert(x) // undefined
答案 2 :(得分:4)
答案 3 :(得分:0)
只有可读性。除此之外,什么都没有。 不 执行此操作,因为它不具备面向未来的能力。以下将很乐意破解:
"use strict";
var a = 3,
b = 4;
{
a = 50;
b = 50;
}
alert(a + b); //alerts 100
我过去常常使用它,因为它允许逻辑分离功能,但由于上述原因而不再使用。