<!-- first -->
<script>
var total = 0;
var newAccumulator = function()
{
return function(i) { total += i; };
}
var foldl = function(arr, putNum)
{
for (var i = 0; i < arr.length; ++i)
{
putNum(arr[i]);
}
}
foldl([1, 2, 3, 4], newAccumulator());
document.write("Sum: " + total + "<br/>");
</script>
<!-- second -->
<script>
var total = 0;
var newAccumulator = function(i)
{
total += i;
}
var foldl = function(arr, putNum)
{
for (var i = 0; i < arr.length; ++i)
{
putNum(arr[i]);
}
}
foldl([1, 2, 3, 4], newAccumulator());
document.write("Sum: " + total + "<br/>");
</script>
最佳答案
在对foldl
的调用中,调用newAccumulator
函数:
foldl([1, 2, 3, 4], newAccumulator());
在第一种情况下,这将返回一个求和的函数:
return function(i) { total += i; };
在第二种情况下,对
newAccumulator
的调用不会返回任何内容,因此foldl
没有可调用以计算总和的函数。您应该将newAccummulator直接传递给
foldl
,而不是它(不)返回的值:foldl([1, 2, 3, 4], newAccumulator);
关于javascript - 首先总结,第二不->为什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1050625/