Javascript中孤独代码块的目的是什么?

Pet*_*son 14 javascript

在Javascript中,你可以拥有孤独的代码块,即没有的代码块if,function或者类似于它们之前的代码块,在代码中任意放置,如下所示:

var a = 3,
b = 4;
{
  a = 50;
  b = 50;
}
alert(a + b); //alerts 100
Run Code Online (Sandbox Code Playgroud)

我知道其他一些语言(我认为C++确实如此),并且它们将它用于范围控制:在孤独的代码块内声明的变量不能在它之外访问.但由于Javascript具有函数作用域而不是块作用域,因此必须使用自执行函数(function(){})()来实现相同的效果.

这个结构有目的吗?你见过有人用它吗?规格是否提到了?这只是语法的副作用,它有一些关于代码块的一般规则吗?

Jef*_*eff 9

正如我在google搜索后发现的那样,标签如何与不是循环的语句一起使用?,孤独的代码块可以与标签相关:

myLabel:
{
    for(x in y) {
        break myLabel;
    }
}
Run Code Online (Sandbox Code Playgroud)

不仅会破坏循环,还会破坏外部代码块.


Joh*_* H. 6

更新(因为此问题在Google上显示为"javascript代码块"):

通过let在ECMAScript 6中引入关键字,代码块也可用于限制变量的范围.

{
    let x = 20;
    alert(x) // 20
}
alert(x) // undefined
Run Code Online (Sandbox Code Playgroud)