Javascript 如果没有参数传递给第一个返回的函数,compose函数的reduce函数的初始值是多少?

Javascript 如果没有参数传递给第一个返回的函数,compose函数的reduce函数的初始值是多少?,javascript,Javascript,我试图重写compose函数,以使用不同的参数打印到控制台,但我仍然无法理解它。首次调用compose函数时,arg未定义。因此reduce函数将使用array console.clear的第一个元素作为初始值,并将其用作下一个函数getCurrentTime的参数 当使用convertToCivilianTime调用compose时,它使用serializeClockTime返回的值作为compose中第一个返回函数的参数 那么,第一次使用未定义的arg参数调用compose时如何不引起错误呢

我试图重写compose函数,以使用不同的参数打印到控制台,但我仍然无法理解它。首次调用compose函数时,arg未定义。因此reduce函数将使用array console.clear的第一个元素作为初始值,并将其用作下一个函数getCurrentTime的参数

当使用convertToCivilianTime调用compose时,它使用serializeClockTime返回的值作为compose中第一个返回函数的参数

那么,第一次使用未定义的arg参数调用compose时如何不引起错误呢

const compose=…fns=> arg=> fns.reduce composed,f=>fcomposed,arg 常数1秒==>1000 const getCurrentTime==>新日期 const clear==>console.clear const log=message=>console.logmessage 常量序列化时钟时间=日期=>{ 小时数:date.getHours, 分钟数:date.getMinutes, 秒:date.getSeconds } const civilianHours=时钟时间=>{ …时钟时间, 小时数:clockTime.hours>12?clockTime.hours-12:clockTime.hours } const appendAMPM=时钟时间=>{ …时钟时间, ampm:clockTime.hours>=12?PM:AM } const display=target=>time=>targettime const formatClock=format=>time=>format.replace'hh',time.hours.replace'mm',time.minutes.replace'ss',time.seconds.replace'tt',time.ampm const prependZero=key=>clockTime=>{ …时钟时间, [键]:时钟时间[键]<10?0+时钟时间[键]:时钟时间[键] } const convertToCivilianTime=clockTime=>composeappendAMPM,civilianHoursclockTime 常量双位数=civilianTime=>compose 零小时前, 零分钟前, 前零秒 文明时代 const startTicking==>setIntervalcompose 清楚的 getCurrentTime, 准时, 转换时间, 两位数, 格式时钟'hh:mm:ss tt', 显示日志 , 一秒钟
StartPick当没有参数作为reduce函数的初始值传递时,它将第一次使用数组的前两个元素调用回调

例如:

[1, 2, 3, 4, 5].reduce((a, b) => {
  console.log(a, ',', b, ',', a + b)
  return a + b;
}
它将生成以下日志:

1 , 2 , 3
3 , 3 , 6
6 , 4 , 10
10 , 5 , 15
将undefined作为初始参数传递给reduce并不意味着使用默认的初始参数数组的第一个元素,而只是使用undefined作为初始参数:

常数arr=[1,2,3]; 常数traceSum=a,b=>{ 控制台,loga,b 返回a+b }; console.logreduce不带初始参数:,arr.reducetraceSum; console.logreduce,初始参数为,arr.reducetraceSum,0;
console.logreduce,初始参数未定义:,arr.reducetraceSum,未定义;您得到了什么错误?我没有得到错误,我想知道为什么在首次调用compose时arg未定义时没有错误。