Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/472.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
独立JavaScript块有什么用处吗?_Javascript_Block - Fatal编程技术网

独立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)的最新版本中实现


摘自同一篇文章:“尽管‘独立’块是有效的语法,但您不希望在JavaScript中使用独立块,因为如果您认为它们与C或Java中的此类块类似,它们不会做您认为它们会做的事情。”如果我是你的话,我会相信他们的话。@BoltClock我仍然很好奇他们是否有用处,这是否是一个好的用途。@BoltClock虽然这是真的,但OP似乎在寻找人们认为“好吧,我发现块语句非常适合于”的特定场景。我不确定是否有,但仍然:)在那种情况下他们不会也什么都不做吗?@alex否。
break myBlock
会跳到块的末尾。@alex你说“什么都不做”是什么意思?它们提供了一个类似“goto”的场景。下面是一个例子:@Ian我的意思是,无论如何都不会控制跳转到标签,但似乎我错了。我不知道标签可以指向循环以外的其他东西。@Jan猛禽队会抓到你的P
{
  var privateValue = 'foo';
}

console.log(privateValue); // -> "foo"