Что происходит в этой функции?
Что такое факториал
function factorial(n) {   // Объявление функции
  var product = 1;   // Объявление внутри функции переменной product со значением 1 (Цифра)
  while (n > 1) {   // Начало цикла. Работает пока n больше 1
    product = product * n;   // переменная product равна самой себе умноженную на n (можно записать product*=n
    n = n - 1;   // переменная n равняется самой себе минус 1 )))
  }   // заканчивается цикл (если n до сих пор больше 1, то цикл идёт на новый круг)
  return product;   // После завершения цикла, функция заканчивается и возвращает значение переменной product
}   // Конец функции )))
factorial(4);   // Запускается функция factorial, с указанием что в ней n будет равна 4