独立JavaScript块有什么用处吗?
下表给出了以下示例:独立JavaScript块有什么用处吗?,javascript,block,Javascript,Block,下表给出了以下示例: var x = 1; { var x = 2; } alert(x); // outputs 2 正如您所看到的,JavaScript没有块作用域。那么JavaScript中的独立块有什么好的用例吗 所谓“独立”是指不与控制流语句(if,for,while,等等)或函数,简短回答:……不太可能。 我知道它们的唯一用途是标签: myBlock: { // stuff if (something) break myBlock // jump to end
var x = 1;
{
var x = 2;
}
alert(x); // outputs 2
正如您所看到的,JavaScript没有块作用域。那么JavaScript中的独立块有什么好的用例吗
所谓“独立”是指不与控制流语句(if
,for
,while
,等等)或函数
,简短回答:……不太可能。
我知道它们的唯一用途是标签:
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
)
不用说,这是一个非常糟糕的主意。所以基本上没有,;不要用它们
(旁注:a
do{/*stuff*/if(something)break;/*stuff*/},而(false)
可以做同样的事情)ES2015引入了与and的块作用域,因此独立块可用于限制:
与var
相比:
{
var privateValue = 'foo';
}
console.log(privateValue); // -> "foo"
let
和const
在所有主要浏览器(包括IE11)的最新版本中实现
break myBlock
会跳到块的末尾。@alex你说“什么都不做”是什么意思?它们提供了一个类似“goto”的场景。下面是一个例子:@Ian我的意思是,无论如何都不会控制跳转到标签,但似乎我错了。我不知道标签可以指向循环以外的其他东西。@Jan猛禽队会抓到你的P
{
var privateValue = 'foo';
}
console.log(privateValue); // -> "foo"