Переписать говнокод?
Зачем его переписывать? Просто делайте следующую задачу. Для начинающего норм. Исходник почти нормально читается и работает без ошибок. Я запустил и за минуту купил полтора десятка телефонов и два аксессуара (не знаю, правда, что за телефоны... пусть будет сюрприз).
не судите строго, гуру джаваскрипта - https://repl.it/JkPV/3const you = { device: 0, accessory: 0, availableMoney:  null };

handle(99.99, 9.99, 0.08, you);

function handle(phone, accessory, tax, customer) {
	
	const availableMoney = parseInt(prompt('Сколько денег у вас не счету?', ''), 10);
	
	if(Number.isNaN(availableMoney) || availableMoney <= 0) return alert('Остаток на счету не является положительной суммой!');

	customer.availableMoney = availableMoney;
	
	if(!confirm('Купить телефон?')) return purchaseNothing(); // ты не хочешь покупать девайс о_0

	const phonePrice = getRealPrice(phone, tax); // стоимость девайса с учётом налогов
	
	if(availableMoney < phonePrice) return phoneBuyingFailed(availableMoney, phonePrice); // девайс не купить :(
	
	if(!confirm('Купить акссесуар?')) return purchasePhone(phonePrice, customer); // ты хочешь девайс, но без акссесуара :|

	const comboPrice = phonePrice + getRealPrice(accessory, tax); // стоимость трубы и акссесуара вместе (комбо) с учётом налогов
	
	if(availableMoney > comboPrice) return purchaseCombo(comboPrice, customer); // денег хватило на всё!

	comboBuyingFailed(availableMoney, comboPrice); // акссесуар точно мимо...
		
	return (confirm('Вы всё ещё хотите приобрести только гаджет?')) // когда пролетел с акссесуаром
		?  purchasePhone(phonePrice, customer) 
		: purchaseNothing;
}

function purchaseNothing() {
	return alert('Очень жаль видеть вас уходящим...');
}


function purchasePhone(price, customer) {
	alert('Вы приобрели девайс за ' + price + '$. Поздравляем с покупкой!'); // бабла хватило на всё!
	
	console.log('Your results:');
	
	return { device: 1, accessory: 1, availableMoney: +fixNumb(customer.availableMoney - price) };
}

function purchaseCombo(price, customer) {
	alert('Вы приобрели девайс вместе с акссесуаром за ' + price + '$. Поздравляем с покупкой!'); // бабла хватило на всё!
	
	console.log('Your results:');
	
	return { device: 1, accessory: 1, availableMoney: +fixNumb(customer.availableMoney - price) };
}

function phoneBuyingFailed(total, price) {
	alert(
		'К сожалению, у вас недостаточно средств на счету(' + total + '$).\n' + 
		'Стоимость гаджета с учётом налогов - ' + price + '$'
	);
}

function comboBuyingFailed(total, price) {
		alert(
		'К сожалению, у вас недостаточно средств на счету(' + total + '$).\n' + 
		'Стоимость гаджета вместе c акссесуаром с учётом налогов - ' + price + '$'
	);
}

function fixNumb(n) {
	return n.toFixed(2);
}

function getRealPrice(n, tax) {
	return +fixNumb((n + (n * tax)));
}