简单练习功能显示NaN

时间:2017-07-27 11:53:16

标签: javascript function nan

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

    return total
}

basketPrice(150);

所以,仅仅为了记录,我开始在一周后开始研究JavaScript,所以请原谅任何愚蠢的错误或行话。

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

我以为我把它弄下来直到我的结果是NaN(我知道这意味着不是一个数字)但我不知道它与它有什么关系以及为什么。

我正在寻找一个解释(尽可能简单)我出错的地方。任何帮助表示赞赏。

提前谢谢。

3 个答案:

答案 0 :(得分: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;

答案 1 :(得分:0)

你正在调用一个只需要一个参数的3个参数的函数,因此总计算变为NaN(非数字)。

答案 2 :(得分:0)

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