这个语法 `functionName: {}` 是什么意思?

5

我在公司的项目中找到了以下代码:

while(condition){        
        code...

        reloop: {
            if(somethingIsTrue) {
                break reloop;
            }
        }

        code...
}

我不明白 reloop 是什么意思,能否有人给一个简单的解释?

2
这是一个标签:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Statements/label - gen_Eric
1
...而 break 允许你跳出一个标签: https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Statements/break - Jamiec
2
这也是JavaScript中类似于Goto的东西...非常可怕(在我看来) - J E Carter II
@JECarterII:这并不是真正的goto,因为它不会跳到你当前不在的任何地方(循环内)。在所示代码中,似乎该语句根本没有做任何事情,因为你无法打破非循环“块”。 - dandavis
2个回答

3
reloop:是一个标签。它们很少使用,具有非常特定的目的:它们允许您从内部循环中中断继续执行外部循环。
MDN上的文章关于标签更好地解释了这一点。
请注意,标签很少使用,大多数时候需要标签意味着您的代码不清晰,应该进行重构。我甚至从未在javascript中使用过标签。
除非它们确实是难以编写的代码的唯一清晰解决方案,否则请避免使用它们。相反,最好将代码拆分为可以从中返回的函数。

2

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接