RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / 问题 / 1543206
Accepted
Monkey Mutant
Monkey Mutant
Asked:2023-09-29 22:01:30 +0000 UTC2023-09-29 22:01:30 +0000 UTC 2023-09-29 22:01:30 +0000 UTC

为什么使用 LABEL 语句不好?[关闭]

  • 772
关闭。这个问题无法给出客观的答案。目前不接受对此问题的答复。

想要改进这个问题吗? 重新组织问题,以便可以根据事实和引述来回答。

4 天前关闭。

改进问题

我看到一个关于烤面包机的问题,并向答案的作者寻求解释。他抛出了一个 MDN 链接:https: //developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/label 当然,我不是 js 大师,我求助于大师,他给了我另一个链接,并说这是 GOTO 的亲戚:https: //habr.com/ru/articles/271131/ 因为我没有'什么都不懂,请用人类语言解释为什么这样设计:

LABEL:
  statenent 

不好...我需要理论解释..plz

javascript
  • 2 2 个回答
  • 80 Views

2 个回答

  • Voted
  1. Best Answer
    Alex Krass
    2023-09-30T03:26:51Z2023-09-30T03:26:51Z

    这是一种通用语言结构,用于快速从程序中的一个位置移动到具有许多限制(以及中断和继续)的另一个位置。通常来自循环和数据处理的深层嵌套。类似的运算符被故意保留在其他语言中;如果它们不好,它们早就被删除了。

    使用语言结构有不好的做法,也有好的做法。在这种情况下,大多数情况下不加考虑地使用运算符会导致程序难以阅读和更改。因此,他们尽量在代码中尽量减少它,以免混淆处理逻辑。

    正如已经提到的,在很多情况下它反而会有所帮助,但必须深思熟虑和谨慎使用。例如,在遍历三维、四维或多维数组时退出循环的深度嵌套。

    first: for(let i = 0; i < dim.lenght; i++) {
        for(let j = 0; j < dim[i].lenght; j++) {
            for(let m = 0; m < dim[i][j].lenght; m++) {
                for(let n = 0; n < dim[i][j][m].lenght; n++) {
                    if (dim[i][j][m][n].hasItems === false) 
                        continue first; // не нашли нужное, быстрый выход в продолжение первого цикла
                        
                    // Дальнейшая обработка данных
                    ...
                }
            }
        }
    }
    

    尝试在没有标签的情况下重写它,很可能您会得到一个标志、它的设置,以及每次迭代中对标志的三次检查,看起来一般。有时处理逻辑比较复杂。但这样的任务很少见,并且您使用标签的需求很小。一般做法——如果没有标签你能写得更好,最好放弃它们,以免代码混乱。

    PS> 与 label 不同,goto 的限制较弱,并且不仅可以在循环内跳转。无论如何,对于这两种情况,上述所有内容仍然有效。

    • 1
  2. Max Rusin
    2023-09-30T02:53:37Z2023-09-30T02:53:37Z

    GOTO 很糟糕,因为它破坏了嵌套逻辑级别的逻辑,而硬编码人员无法想象自己没有嵌套。并且该逻辑的嵌套级别越高,代码中 GOTO 的存在就越糟糕。在平面结构上 GOTO 表现出色(汇编器就是由此制成的 - 它称为 JMP)。以上关于 LABEL 的所有描述均正确

    • -1

相关问题

  • 第二个 Instagram 按钮的 CSS 属性

  • 由于模糊,内容不可见

  • 弹出队列。消息显示不正确

  • 是否可以在 for 循环中插入提示?

  • 如何将 JSON 请求中的信息输出到数据表 Vuetify vue.js?

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    我看不懂措辞

    • 1 个回答
  • Marko Smith

    请求的模块“del”不提供名为“default”的导出

    • 3 个回答
  • Marko Smith

    "!+tab" 在 HTML 的 vs 代码中不起作用

    • 5 个回答
  • Marko Smith

    我正在尝试解决“猜词”的问题。Python

    • 2 个回答
  • Marko Smith

    可以使用哪些命令将当前指针移动到指定的提交而不更改工作目录中的文件?

    • 1 个回答
  • Marko Smith

    Python解析野莓

    • 1 个回答
  • Marko Smith

    问题:“警告:检查最新版本的 pip 时出错。”

    • 2 个回答
  • Marko Smith

    帮助编写一个用值填充变量的循环。解决这个问题

    • 2 个回答
  • Marko Smith

    尽管依赖数组为空,但在渲染上调用了 2 次 useEffect

    • 2 个回答
  • Marko Smith

    数据不通过 Telegram.WebApp.sendData 发送

    • 1 个回答
  • Martin Hope
    Alexandr_TT 2020年新年大赛! 2020-12-20 18:20:21 +0000 UTC
  • Martin Hope
    Alexandr_TT 圣诞树动画 2020-12-23 00:38:08 +0000 UTC
  • Martin Hope
    Air 究竟是什么标识了网站访问者? 2020-11-03 15:49:20 +0000 UTC
  • Martin Hope
    Qwertiy 号码显示 9223372036854775807 2020-07-11 18:16:49 +0000 UTC
  • Martin Hope
    user216109 如何为黑客设下陷阱,或充分击退攻击? 2020-05-10 02:22:52 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5