如果没有块范围,自由站块有什么意义?

时间:2012-09-28 19:21:39

标签: javascript syntax lexical-scope

  

你可以使用像这样的独立式块......

var something = 1;
{
  var something = 2;
  print("Inside: " + something);
}
print("Outside: " + something);

来自:http://eloquentjavascript.net/chapter3.html#p3c7ae609

但是有这样的块有什么意义呢?它有什么用途?

4 个答案:

答案 0 :(得分:3)

在ES6中,将会有let声明的块范围变量,在这些变量中,独立的块将不再是无意义的。

答案 1 :(得分:3)

自由站块通常不会在脚本中添加任何值,但是可以用于代码组织,例如拆分方程式:

一行:
//long equations are hard to read
foo = bar * baz + fizz - buzz;
<子>块:
{
    //this groups relevant information into a descrete section
    foo = bar;
    foo *= baz;
    foo += fizz;
    foo -= buzz;
}

虽然基于标准输入集执行操作的长方程通常会分解为它们自己的函数:

As Function:
function qux(bar, baz, fizz, buzz) {
    var ret;
    ret = bar;
    ret *= baz;
    ret += fizz;
    ret -= buzz;
    return ret;
}

foo = qux(bar, baz, fizz, buzz);

答案 2 :(得分:1)

哎呀,我一直在读,这是我的回答:

  

事实上,尽管允许这样的块,但它们完全没有意义。

http://eloquentjavascript.net/chapter3.html#p6f53387f

答案 3 :(得分:0)

你回答了自己的问题。来自OP中链接的文章:

  

事实上,虽然允许这样的块,但它们完全是这样的   没有意义的。