MDN article on JavaScript blocks给出了这个例子:
var x = 1;
{
var x = 2;
}
alert(x); // outputs 2
正如您所看到的,JavaScript没有块范围。那么JavaScript中的独立块有什么好的用例吗?
“独立”我的意思是不与控制流声明(if
,for
,while
等)或function
配对。
答案 0 :(得分:7)
ES2015引入了使用let
和const
的块范围,因此独立块可用于限制scope of variables:
{
let privateValue = 'foo';
}
console.log(privateValue); // -> ReferenceError
与var
:
{
var privateValue = 'foo';
}
console.log(privateValue); // -> "foo"
所有主流浏览器(包括IE11)的最新版本都实现了 let
和const
。
答案 1 :(得分:4)
我知道的唯一用途是标签:
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
,更好watch out for the raptors)
毋庸置疑,这是一个非常糟糕的主意。基本上没什么;只是不要使用它们。
(旁注:do { /* stuff */ if (something) break; /* stuff */ } while (false)
可以做同样的事情)