我编写了一个函数来计算函数的模数,但是当我在控制台中运行它时,它总是返回未定义的。如果使用console.log,可以看到它正在计算正确的值。



function modulo(sum, divider){
  function loop(difference){
    if(difference < divider){
     console.log(difference)
     return difference
    } else {
       setTimeout(loop(difference - divider), 0)
    }
  }

  return loop(sum - divider)
}

modulo(8, 5) // 3





我想要的是返回答案
例如

var result = modulo(8, 5) // 3

更新:

一个更好的解决方案是

modulo = function (x,y){ return x - y * Math.floor(x/y) }

最佳答案

为了回答您的原始问题,setTimeout是异步的,并且您的loop函数返回undefined,因此得到undefined。要使其执行您想要的操作,请直接调用loop或使用promises。

但是,另一方面,即使您要实现模数,这也是一种较差的方法。请改用一些更好的division algorithms

关于javascript - 使用JavaScript计算模数返回未定义,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26407957/

10-12 07:38
查看更多