我写了一个函数来计算函数的模数,但是当我在控制台中运行它时,它总是返回undefined。如果我使用console.log,我可以看到它正在计算正确的值。使用JavaScript计算模数返回undefined
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()',如果使用得当,会使得'function'异步/事件驱动下的电流,无法'return'标准。请参阅“[为什么我的变量在修改函数内部后没有改变?](http://stackoverflow.com/questions/23667086/why-is-my-variable-unaltered-after-i-modify-it-inside “为什么我说”*如果使用正确*,“请参阅”[为什么当我使用setTimeout时立即执行该方法?](http://stackoverflow.com/questions/) 7137401 /为什么是方法执行立即当我使用settimeout)“ – 2014-10-16 15:19:04
感谢您的评论乔纳森:-) – Peter 2014-10-17 08:23:50