独立的JavaScript块有用吗?

时间:2013-07-30 05:54:08

标签: javascript block

MDN article on JavaScript blocks给出了这个例子:

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

正如您所看到的,JavaScript没有块范围。那么JavaScript中的独立块有什么好的用例吗?

“独立”我的意思是不与控制流声明(ifforwhile等)或function配对。

2 个答案:

答案 0 :(得分:7)

ES2015引入了使用letconst的块范围,因此独立块可用于限制scope of variables

{
  let privateValue = 'foo';
}

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

var

相反
{
  var privateValue = 'foo';
}

console.log(privateValue); // -> "foo"
所有主流浏览器(包括IE11)的最新版本都实现了

letconst

答案 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)可以做同样的事情)