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

时间:2012-01-04 23:57:06

标签: javascript

在Javascript中,您可以拥有孤独的代码块,即代码块没有iffunction或类似的代码块,在代码中任意放置,如下所示:

var a = 3,
b = 4;
{
  a = 50;
  b = 50;
}
alert(a + b); //alerts 100

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

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

4 个答案:

答案 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)

只有代码可读性,仅此而已。

他们甚至没有给你封闭的优势:

var c = 'fail';
{
    var c = 123;
}
alert(c); //alerts 123

see it live

答案 3 :(得分:0)

只有可读性。除此之外,什么都没有。 执行此操作,因为它不具备面向未来的能力。以下将很乐意破解:

"use strict";

var a = 3,
b = 4;
{
  a = 50;
  b = 50;
}
alert(a + b); //alerts 100

我过去常常使用它,因为它允许逻辑分离功能,但由于上述原因而不再使用。