关于JavaScript块的MDN文章给出了这个例子:
var x = 1;
{
var x = 2;
}
alert(x); // outputs 2
Run Code Online (Sandbox Code Playgroud)
如您所见,JavaScript没有块范围.那么JavaScript中的独立块有什么好的用例吗?
通过"独立"我的意思是不是与流程控制语句(配对if,for,while,等)或function.
ES2015介绍块作用域与let和const,所以独立的块,用于限制成为有用的变量范围:
{
let privateValue = 'foo';
}
console.log(privateValue); // -> ReferenceError
Run Code Online (Sandbox Code Playgroud)
与之相反var:
{
var privateValue = 'foo';
}
console.log(privateValue); // -> "foo"
Run Code Online (Sandbox Code Playgroud)
let并const在所有主流浏览器(包括IE11)的最新版本中实现.
我知道它们的唯一用途是标签:
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
}
Run Code Online (Sandbox Code Playgroud)
(几乎像一个goto,最好提防猛禽)
不用说,这是一个非常糟糕的主意。所以基本上,什么都没有;只是不要使用它们。
(旁注:ado { /* stuff */ if (something) break; /* stuff */ } while (false)可以做同样的事情)