【问题标题】:Is it okay to use break with labels in javascript?可以在javascript中使用带有标签的break吗?
【发布时间】:2013-03-25 04:12:54
【问题描述】:

这样做有什么好处吗?是否会导致可读性问题?

【问题讨论】:

  • 为什么要投反对票?这个问题有什么问题吗?
  • (很可能是因为这类问题不适合“提出具体问题,得到具体答案”的 SO 格式。关于模糊、一般性问题的问题往往会被否决,并且关闭。)
  • “javascript 中的中断标签会导致可读性问题吗?”一个模糊的问题?
  • 查看文档顶部的常见问题解答——“您应该只根据您面临的实际问题提出实用的、可回答的问题。喋喋不休的开放式问题会降低实用性我们的网站,并将其他问题推到首页。”

标签: javascript readability code-readability


【解决方案1】:

标签通常在 JavaScript 中用于中断外循环。例如:

while (true) {
    while (true) {
        if (someCondition) break;
    }
}

在这个程序中,你只会在内部循环中使用break。外循环将无限循环。但是,有时您可能希望从外循环而不是内循环中断。您为此目的使用标签:

loop: while (true) {
    while (true) {
        if (someCondition) break loop;
    }
}

也就是说,如果你有很多嵌套循环或 switch case,那么使用标签实际上有助于提高代码的可读性,即使它实际上可能不会影响程序本身。

以本题代码为例:https://codereview.stackexchange.com/q/14532/15640

这里我们在 for 循环中有一个 switch case,尽管它使用了我们永远不需要跳出 for 循环标记循环,并且 switch case 可能会帮助一些人。对其他人来说,这只是一种干扰。

最终归结为您的编程风格。初学者通常喜欢给所有东西贴标签。经验丰富的程序员会发现太多的 cmets 和标签很烦人。

Steve Yegge 实际上为此写了一篇完整的博客文章。你可能会觉得很有趣:http://steve-yegge.blogspot.in/2008/02/portrait-of-n00b.html

尝试不使用 cmets 进行编码:http://www.codinghorror.com/blog/2008/07/coding-without-comments.html

【讨论】:

    【解决方案2】:

    虽然我不相信在编码中有太多绝对,但我会说我很少会在 Javascript 中使用标签。

    事实上,我认为我从来没有使用过它们。

    感谢给定的强大结构,for ...for ... inwhiledo ... whileif ... else 以及早期执行return 的能力几乎所有需要标签的东西都可以写成更清晰的结构。

    【讨论】:

    • 感谢@jeremy 的评论。是否有任何在线研究解释了为什么它应该很少使用破坏标签?
    • 我不知道——但如果你研究了常规的控制结构,你就会明白你真的不需要标签。如果您最终遇到无法简化的问题,请寻求具体帮助。
    【解决方案3】:

    我很难考虑是否需要嵌套循环,并且有必要从内部按名称打破外部循环,而不是通过简单检查外部循环底部的值来决定继续还是不...

    通常,这种结构比break third_from_outer_loop; 或continue loop_that_is_two_loops_higher 更容易理解。

    如果您已经准备好从最里面打破最外面的循环,那么为什么不早点返回呢?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-11-30
      • 2016-06-19
      • 2022-11-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多