独立的JavaScript块有用吗?

Web*_*ner 5 javascript block

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

var x = 1;
{
  var x = 2;
}
alert(x); // outputs 2
Run Code Online (Sandbox Code Playgroud)

如您所见,JavaScript没有块范围.那么JavaScript中的独立块有什么好的用例吗?

通过"独立"我的意思是不是与流程控制语句(配对if,for,while,等)或function.

joe*_*ews 7

ES2015介绍块作用域与letconst,所以独立的块,用于限制成为有用的变量范围:

{
  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)

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


Doo*_*nob 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
}
Run Code Online (Sandbox Code Playgroud)

(几乎像一个goto,最好提防猛禽

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

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