javascript - 在复杂例程中使用多个值的最简洁方法?

标签 javascript function for-loop while-loop software-design

请参阅以下近似我的情况的伪代码片段:

function foo () {
  for ( velocity=0; velocity<100; velocity++ ) {
    root1 = computeRoot1();
    root2 = computeRoot2();
    // do a bunch of computation with root1
    // if result of computation is undesirable, do computations again with root2 
  }

所以,基本上我想在 for 循环体中使用 root1 进行计算,然后使用 root2 if root1的计算结果无效。

我的第一直觉是显而易见的方法,将计算包装在帮助函数中,但我不确定这是最清晰的方法。我正在尝试在代码中实现信息的良好搭配,而对最多执行两次(每次迭代)的代码的函数调用会破坏该目标,而不会为我的代码提供大量简洁性。

我在想也许是一个for循环,例如:

for ( root=root1; root1IsInvalid==true || bothRootsInvalid==true; root=root2 )

或具有类似功能的while。但我当然愿意接受其他建议

作为阅读此代码的人,哪种方法会使它对您来说最具可读性和简洁性?

顺便说一句,我正在用 JavaScript 编写这个特定的函数,但与语言无关的解决方案会很棒。

编辑:澄清的代码片段

最佳答案

您有几种基本方法:

  1. 将值放入数组中,并使用 for 循环对数组中的每个项目运行相同的代码,也许在满足某些条件时停止迭代。
  2. 创建一个执行计算的函数,然后只需编写在第一个函数上调用该函数的代码,然后在第二个函数上调用该函数,依此类推。
  3. 创建一个 while 循环并重复您的代码,直到满足某些条件。

第一个选项更容易扩展到 N 个项目。对于仅两个项目,第二个选项可能更简单。

您可以使计算函数成为本地函数(在当前正在执行的函数内部声明和使用),这样它就不会添加到全局命名空间,并且您的代码仍然更加封装。

我也不确定你打算用这一行做什么:

root1, root2 = computeRoots();

但是,它只是将值分配给 root2 并且看起来您可能希望在这些前面使用 var 将它们定义为局部变量。

关于javascript - 在复杂例程中使用多个值的最简洁方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14097507/

相关文章:

javascript - 开 Jest - 没有输出测试结果

matlab - 从非零值开始 matlab for 循环

java - 检查不同大小的正方形中与二维数组的中间位置相关的位置?

javascript - 使用 JQuery Mobile ui-datepicker 保存日期/事件

javascript - 为什么 netsniff.js 将 javascript 错误打印到输出中?

function - 函数 Haskell 的类型推断

r - 为什么 R 中的 Order() 不返回正确的顺序?

java - 如何使用嵌套 for 循环翻转图像?

javascript - 将 JSON 对象推送到 Mongoose 数组中

javascript - 隐藏 - 当结果为 0 时显示按钮