Poznakomlus, а кто будет проверять на Number.MAX_SAFE_INTEGER? Зачем отрицательные значения обрабатываются отдельно?
function reverseNumber(value) {
	let result = 0n;
	while(value !== 0n) {
		result = 10n * result + value % 10n;
		value /= 10n;
	}
	return result;
}
alert(1221n === reverseNumber(1221n));
При помощи рекурсии...
function reverseNumber(value, result = 0n) {
	return value === 0n ? result : reverseNumber(value / 10n, 10n * result + value % 10n);
}
alert(1221n === reverseNumber(1221n));