【发布时间】:2016-05-15 02:08:51
【问题描述】:
假设您有一个非常复杂的算法,需要数十个 for 循环。
JavaScript 对嵌套循环的深度有限制还是没有限制?
深层嵌套 for 循环的最佳做法是什么?
我尝试在 MDN 上搜索,但找不到我要查找的内容
编辑
我正在查看是否有内置限制。例如,如果你有这样的事情
If ( a = 1, a < 3, a++) {
if (b = 1; b < 3; b++) {
...
if (cd = 1; cd < 3; cd++)
这真的可能吗,或者 JS 会抛出错误
编辑:这是一个理论上的示例,说明您何时可能需要此
您想查找数组中的任何 500 个数字之和是否等于另一个数字。您需要大约 500 个循环才能将数字添加到组合数组中,然后过滤它们以找到它们相对于第三个数字的总和。
宇宙中是否有足够的空间来存储这么多数据?
【问题讨论】:
-
您需要更具体地了解该功能。
-
你可以试试递归函数
-
您会遇到堆栈溢出问题。规范没有限制,浏览器有。但是还有像
tail-call optimization和trampolining这样的技术,这些技术可以帮助减少堆栈大小等。这意味着如果你真的想要,你可以拥有更高级别的递归。编辑:这很好解释stackoverflow.com/questions/25228871/… -
“宇宙中会有足够的空间来存储这么多数据吗?”是的。数组中有500个数字?然后计算出所有的排列?即 500^2=250k。 是的,宇宙中至少有 250k 的空间
标签: javascript for-loop nested-loops limits cyclomatic-complexity