но если написать let abc = function(arg), то abc равняется undefined
Именно так писать и нужно. Но функция при этом должна возвращать значение.
При этом function - это условное имя функции. Поскольку это служебное слово, его для именования использовать нельзя.
Покажите саму функцию.
Если форма нужна только конкретному пользователю, можно сохранить ее на стороне клиента, а потом восстановить. Примерно так, как вариант (нужно допиливать):
На JS можно проверять поддержку браузером HTML 5.
Если ок, то -- им. Если нет, то скриптом. Но любую клиентскую проверку можно обойти при желании. Так что единственная надежная проверка -- со стороны сервера.
PS. Кто не понял, это стандартная сортировка. Я сначала бегло посмотрел, подумал, что это поиск решения арифметической прогрессии. Но потом понял, что ошибся.