5

MDN 关于 JavaScript 块的文章给出了这个例子:

var x = 1;
{
  var x = 2;
}
alert(x); // outputs 2

如您所见,JavaScript 没有块作用域。那么 JavaScript 中的独立块有什么好的用例吗?

“独立”是指不与控制流语句(ifforwhile等)或function.

4

2 回答 2

8

ES2015 引入了使用letand的块作用域const,因此独立块对于限制变量的作用域变得有用:

{
  let privateValue = 'foo';
}

console.log(privateValue); // -> ReferenceError

对比var

{
  var privateValue = 'foo';
}

console.log(privateValue); // -> "foo"

letconst在所有主流浏览器(包括 IE11)的最新版本中实现。

于 2015-01-25T16:31:10.473 回答
5

简短的回答:......不是真的。

我知道它们的唯一用途是标签:

myBlock: {
    // stuff
    if (something) break myBlock // jump to end of block
    // more stuff
    if (somethingElse) continue myBlock // jump to beginning of block
    // blah blah blah, more stuff
}

(几乎就像一个goto,最好小心猛龙队

不用说,这是一个非常糟糕的主意。所以基本上,什么都没有;只是不要使用它们。

(旁注:ado { /* stuff */ if (something) break; /* stuff */ } while (false)可以做同样的事情)

于 2013-07-30T05:58:56.373 回答