Javascript 第一个和,第二个不';t->;为什么? var合计=0; var newacculator=函数() { 返回函数(i){total+=i;}; } var foldl=函数(arr,putNum) { 对于(变量i=0;i
你认为你想要什么Javascript 第一个和,第二个不';t->;为什么? var合计=0; var newacculator=函数() { 返回函数(i){total+=i;}; } var foldl=函数(arr,putNum) { 对于(变量i=0;i,javascript,Javascript,你认为你想要什么 <!-- 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(
<!-- 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>
在第二个调用中,您正在fold1函数中执行newacculator。传入newacculator而不是newacculator() 旧的 新的
在对
foldl
的调用中,调用newacculator
函数:
foldl([1, 2, 3, 4], newAccumulator);
在第一种情况下,这将返回一个进行求和的函数:
foldl([1, 2, 3, 4], newAccumulator());
在第二种情况下,对newacculator
的调用不会返回任何内容,因此foldl
没有可以调用的函数来计算总和。您应该将NewAccumulator直接传递给
foldl
,而不是它(不)返回的值:
第二个不起作用,因为您没有传递foldl函数 在第一个示例中,您执行newacculator,newacculator返回一个函数,该函数被传递给foldl。。。Foldl使用该函数对数字求和 在第二个示例中,执行newacculator并传递结果,但newacculator的结果不是函数 此外,您命名为foldl的函数通常称为“foreach”。如果您将结果存储在一个数组中,它可能被称为“map”。Foldl通常通过使用一个函数将数字添加到总数中并返回新的总数来累加总数
foldl([1, 2, 3, 4], newAccumulator);
foldl([1, 2, 3, 4], newAccumulator());
return function(i) { total += i; };
foldl([1, 2, 3, 4], newAccumulator);