我编写了一个函数来计算函数的模数,但是当我在控制台中运行它时,它总是返回未定义的。如果使用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/