javascript - 范围错误 : Maximum call stack size error in JS function

标签 javascript underscore.js

  function findRandomDayIndex() {
    var dayindex = _.random(0, 39);
    var slot = dayslots[dayindex]; // array of 40 objects
    if(slot.filled === true || slot === undefined) {
      return findRandomDayIndex();
    } else {
      return dayindex;
    } 
  }

我得到错误:

RangeError: Maximum call stack size exceeded iteration of the same function

怎样才能更好的写函数?

最佳答案

你可以试试这个版本

function findRandomDayIndex()
{
   var dayindex = Math.random(0, 39);
   while( ( slot = dayslots[dayindex] ) == null )
       dayindex = Math.random(0, 39);
   return dayindex ;
}

请检查dayslot的一致性,以防止无限的while循环

关于javascript - 范围错误 : Maximum call stack size error in JS function,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34466738/

相关文章:

javascript - 如何发布 json?

javascript - 在 Firefox 中禁用鼠标中键单击和拖动功能

javascript - 单击完成后如何在剑道 ui 网格中捕获销毁事件?

javascript - 如何将此数组转换为对象数组?

javascript - 使用 lodash 合并单个数组中的重复对象

javascript - 如何使用 JavaScript 在 Canvas 中单击一个圆圈

javascript - Backbone 初始化时不保留属性值

jquery - 将表单数据序列化为 JSON

javascript - 使用下划线从 JavaScript 中的对象列表中提取值

javascript - 如何从 LocalStorage 中删除特定项目