Скрипт магазина JavaScript не будет работать так, как задумано - PullRequest
0 голосов
/ 11 декабря 2018

Я пытаюсь сделать этот скрипт магазина включающим следующие критерии:

  1. Баланс не может быть меньше 0
  2. Когда средств недостаточно, будет использован ваучер.
  3. Он регистрирует как использование ваучера, так и подтверждение успеха.

В настоящее время баланс падает ниже нуля, и ваучер не используется ... может быть, это очевидно, но я схожу с ума.

Кроме того, любые советы по оптимизацииэтот код?

Спасибо!Извините, если это до боли очевидно.Я совершенно новичок в этом!

var total = 500;
var balance = 400;
var voucher = 100;
useVoucher = true;

if ( (total > balance) || (balance < 0) ) {
console.log("Insufficient funds. The total is " + total + "$ and you only have a balance of " + balance + "$.");
} else if (useVoucher = true) {
total = total - voucher
console.log(voucher + "$ Voucher applied. The new total is " + total + "$.");
} else {
console.log("You can't afford this item");
} 

if ((balance - total < 0) && balance > total); {
console.log("Success! You have a new balance of " + (balance - total) + "$.");
}

Ответы [ 4 ]

0 голосов
/ 11 декабря 2018

Сначала Вы должны проверить, можете ли вы использовать ваучер.Это происходит, если у вас недостаточно средств, но у вас достаточно средств с помощью ваучера.

В этой ситуации используйте ваучер.

Чем проверяете, достаточно ли у вас баланса для оплаты или нет.

Вот код:

var total = 500;
var balance = 400;
var voucher = 100;
useVoucher = true;


if (total > balance     // Not enough balance
      && useVoucher     // You can use the voucher
      && total - voucher <= balance) {  // Total minus voucher is under balance
  console.log(voucher + "$ Voucher applied. The new total is " + total + "$.");
  // IN this case use voucher
  total = total - voucher;

  // Would be better to check here if total is under 0, 
  // otherwise in the next few lines of code you will increase your balance.
} 

if (total <= balance) {   // Check if you have enough balance
  balance = balance - total;
  console.log("Success! You have a new balance of " + balance + "$.");
} else {                  // Not enough balance
  console.log("Insufficient funds. The total is " + total + "$ and you only have a balance of " + balance + "$.");
}

Дополнительная проверка должна быть сделана, чтобы проверить, больше ли ваучер, чем общая сумма. Обычно, используя ваучер, вы теряете лишние деньги из ваучера.если он больше, чем цена, но в этой ситуации я не добавил эту проверку, поскольку она явно не запрашивалась.

0 голосов
/ 11 декабря 2018

Есть несколько ошибок, вот исправленная версия:

var total = 500;
var balance = 400;
var voucher = 100;
useVoucher = true;

if ( (total > balance) || (balance < 0) ) {
    console.log("Insufficient funds. The total is " + total + "$ and you only have a balance of " + balance + "$.");
} else if (useVoucher) {
    total = total - voucher
    console.log(voucher + "$ Voucher applied. The new total is " + total + "$.");
} else {
    console.log("You can't afford this item");
} 

if ((balance - total > 0) > 0 && balance > total) {
    console.log("Success! You have a new balance of " + (balance - total) + "$.");
}
  1. Не используйте ; в ваших if утверждениях.Это не обязательно и приведет к тому, что ваша логика будет выполнена неправильно.
  2. Не делайте (useVoucher = true), это будет присваивать значение true переменной useVoucher, а не проверять, является ли оно true.Сделайте (useVoucher) вместо этого.Это проверит, имеет ли useVoucher значение, которое не равно false.
0 голосов
/ 11 декабря 2018

Попробуйте еще раз проверить свою логику.Похоже, что ваучер используется только при достаточном количестве средств.Я думаю, что вы должны удалить логику «else if» и ввести ваучер в первом блоке «if».

0 голосов
/ 11 декабря 2018
debugger;
var total = 500;
var balance = 400;
var voucher = 100;
var balanceWithVoucher = balance + voucher;
total > balance ? useVoucher = true : useVoucher = false;


if ((total > balance && total > balanceWithVoucher) || (balance < 0)) {
    console.log("Insufficient funds. The total is " + total + "$ and you only have a balance of " + balance + "$.");
} else if (useVoucher == true) {
    total = total - voucher
    console.log(voucher + "$ Voucher applied. The new total is " + total + "$.");
} else {
    console.log("You can't afford this item");
}
if ((balance - total > 0) && balance > total); {
    console.log("Success! You have a new balance of " + (balance - total) + "$.");
}
...