0

I ran across some code this week that has me very confused. Can someone break down for me exactly what's going on, line-by-line?

new Date(
  (d => d.setMonth(d.getMonth() - 6))(
    new Date()
  )
)

I understand it's creating the current date minus six months (which I didn't expect to work in all cases, but that is an aside). In particular, I don't understand two things:

a) The variable d. Does this represent the new Date that's being created on line 1?

b) The second new Date() on line 3. Is d.setMonth() returning a function and new Date() is the parameter?

Thanks in advance!

  • `setMonth` returns [the number of milliseconds](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/setMonth) since the epoch. It then gets turned into a date by `new Date` around it. – CertainPerformance Mar 11 '22 at 22:55
  • Thank you, but I am still confused about the *second* new Date, which looks like it is a parameter. Is it a mistake in the code? – Doug Bass Mar 14 '22 at 16:33
  • The linked canonical explains it. Yes, it's a parameter to the IIFE – CertainPerformance Mar 14 '22 at 16:43

0 Answers0