Учимся простому дебагингу. Выводим в консоль интересующие места:
function formatDate(date) {
/* код без изменений */
let d = date;
const dWithoutZeros = [
d.getDate(),
(d.getMonth() + 1),
d.getFullYear(),
d.getHours(),
d.getMinutes()
];
console.log('d[]: ', dWithoutZeros);
d = [
'0' + d.getDate(),
'0' + (d.getMonth() + 1),
'' + d.getFullYear(),
'0' + d.getHours(),
'0' + d.getMinutes()
];
console.log('d[] with zeros: ', d);
d = d.map(component => component.slice(-2));
console.log('d[] sliced: ', d);
const a = d.slice(0, 3).join('.');
console.log('part a: ', a);
const b = d.slice(3).join(':');
console.log('part b: ', b);
const result = a + ' ' + b;
console.log('result: ', result);
return result;
}
/* код без изменений */
Запускаем и смотрим вывод. Все вопросы, кроме одного, отпадают.
почему не просто new Date - 1? Автор учебника не показывал примеры, чтобы в new Date помещался другой new Date
Открываем jsfiddle. Набираем:
console.log('case 1: ', new Date - 1);
console.log('case 2: ', new Date(new Date - 1));
Запускаем и смотрим вывод. Делаем выводы. На всякий случай
читаем MDN.
Поздравляю, вы научились дебагингу с помощью консоли, а так же узнали о существовании MDN и если у вас когда-либо возникнут подобные вопросы, вы теперь знаете как самостоятельно получить на них ответ.