I have read numerous explanation attempts why this was created like this back in the day (with both year and day index are not being 0-based). None of these explanations really made sense.
What is even more surprising to me: even in the latest ECMAScript 2018 draft, this issue still exists. see dates in ECMAScript 2018
Javascript might have just taken this from Java long time ago but I don't see why it is not being changed unless there actually is a proper reason for it.
Thanks & regards, Marcel