简单练习函数显示NaN

Simple Practice Function Displays NaN

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

    return total
}

basketPrice(150);

所以为了记录,我大约一周前开始调查 JavaScript 所以请原谅任何愚蠢的错误或行话。

以上我试图生成一个非常简单的输出。我确定这不是您在电子商务网站上制作购物篮的方式,但这只是我用来帮助我练习的示例。

我以为我已经记下了,直到我的结果是 NaN(我知道这意味着不是数字),但我不知道它与哪一点有关以及为什么。

我正在寻找我哪里出错的解释(尽可能简单)。感谢任何帮助。

提前致谢。

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);

您在计算总数后设置变量。因此可以使用默认值 and/or 在计算总数之前设置它们:

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;

您正在调用一个需要 3 个参数且只有一个参数的函数,因此总计的计算变为 NaN(不是数字)。

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