Функция простой практики отображает NaN

1
function basketPrice(product, vat, delivery) {
    var total = product + vat + delivery;
    delivery = 7.5;
    vat = 20/100 * product;

    return total
}

basketPrice(150);

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

Выше я пытаюсь создать очень простой вывод. Я уверен, что это не то, как вы создаете корзину на веб-сайте электронной коммерции, но это просто пример, который я использую, чтобы помочь мне практиковать.

Я думал, что у меня это было до тех пор, пока мой результат не был NaN (что я знаю - это не номер), но я понятия не имею, к чему это относится и почему.

Я ищу объяснение (как можно более простое) о том, где я ошибся. Любая помощь приветствуется.

Заранее спасибо.

  • 0
    Пожалуйста, отправьте встроенный код. Я не могу скопировать + редактировать изображение: /
  • 0
    Готово, прости, не подумал об этом.
Теги:
function
nan

3 ответа

2
Лучший ответ
function basketPrice(product, vat, delivery){
    console.log(product,vat,delivery);//150,undefined,undefined

  var total=product + vat + delivery;//150+undefined is not a number

 delivery=7.5;//now its to late to change sth
 vat = 0.2 * product;

 return total;
}

basketPrice(150);

Вы устанавливаете переменные после вычисленного итога. Таким образом, вы можете использовать значения по умолчанию и/или устанавливать их перед вычислением итоговой суммы:

function basketPrice(product, vat, delivery=7.5){

console.log(product,vat,delivery);//150,undefined,7.5

vat = vat || 0.2 * product;

 var total=product + vat + delivery;// is a number

 return total;
}
basketPrice(150);
basketPrice(1,2);
basketPrice(1,2,3);

Если вы на самом деле не хотите, чтобы эти два были параметрами, это гораздо проще:

function basketPrice(product){
 return product * 1.2 + 7.5;
}

или короткий:

basketPrice=p=>p*1.2+7.5;
  • 0
    Что ты делаешь .... Что такое val и что такое НДС?
  • 0
    Не могли бы вы объяснить пару вещей, пожалуйста ?: - почему вы используете параметр val и как он связан с переменной vat? -почему ты написал vat = vat || (что я думаю означает или) вместо просто VAT = 0,2 * продукта?
Показать ещё 7 комментариев
0

Вы вызываете функцию, которая ожидает 3 аргумента только с одним аргументом, поэтому вычисление суммы становится NaN (Not a Number).

0
    function basketPrice(product, delivery) { 
vat = (20/100 ) * product;
var total = product + vat + delivery; 
 return total;
} 
basketPrice(150,7.5);
  • 1
    Не могли бы вы вкратце объяснить, почему вы не делаете НДС параметром? так что вам не нужно устанавливать аргумент для этого? Кроме того, единственная цена, которая будет варьироваться - это цена товара. Так я могу объявить цену доставки внутри функции также? Вместо использования аргумента?
  • 0
    @ 11 - да, если это не аргумент, не передавайте его.
Показать ещё 6 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню