не судите строго, гуру джаваскрипта -
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)));
}