【问题标题】:Simple Practice Function Displays NaN简单练习函数显示 NaN
【发布时间】:2018-01-03 03:20:58
【问题描述】:
function basketPrice(product, vat, delivery) {
    var total = product + vat + delivery;
    delivery = 7.5;
    vat = 20/100 * product;

    return total
}

basketPrice(150);

所以为了记录,我大约一周前开始研究 JavaScript,所以请原谅任何愚蠢的错误或术语。

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

我以为我已经解决了这个问题,直到我的结果是 NaN(我知道这意味着不是数字)但我不知道它与哪个位相关以及为什么。

我正在寻找关于我哪里出错的解释(尽可能简单)。任何帮助表示赞赏。

提前谢谢你。

【问题讨论】:

  • 请发布内联代码。我无法复制+编辑图像:/
  • 完成,抱歉没有想到。

标签: javascript function nan


【解决方案1】:
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;

【讨论】:

  • 你能解释一下吗?: - 为什么使用参数 val 以及它如何链接到 vat 变量? -你为什么写增值税=增值税|| (我认为这意味着或)而不仅仅是增值税 = 0.2 * 产品?
  • @lekens 哦,不,错字了:/
  • @11 1) 错字对不起 :/ , 2) 也许你想换缸?所以你可以做 basketPrice(1,2,3) 并且总数为 6
  • @Jonas w 那么为什么 || (或)逻辑运算符允许我更改增值税吗?我不能将 o.2 * 产品更改为 0.4 * 产品吗?我并不是在试图表现出高傲我是在真正地努力学习:D
  • @11-vat = 5 || 6;是 5。增值税 = 未定义 || 6;是 6. 所以如果设置了增值税,则需要增值税,否则需要 0.2* 产品..
【解决方案2】:

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

【讨论】:

    【解决方案3】:
        function basketPrice(product, delivery) { 
    vat = (20/100 ) * product;
    var total = product + vat + delivery; 
     return total;
    } 
    basketPrice(150,7.5);
    

    【讨论】:

    • 您能简单解释一下为什么不将增值税作为参数吗?是不是这样您就不必为此设置参数?唯一不同的价格是产品的价格。那么我也可以在函数内声明交货价格吗?而不是使用参数?
    • @11- 是的,如果它不是参数,不要传递它。
    • @Jonas w 很抱歉让您感到痛苦,但您在这个问题上提供了很大帮助 Jonas w,“通过”您的意思是不要将其作为参数?谢谢。
    • 虽然这段代码 sn-p 可以解决问题,但including an explanation 确实有助于提高帖子的质量。请记住,您是在为将来的读者回答问题,而这些人可能不知道您提出代码建议的原因。
    • @Jonas w 不得不用那个速记来看看一些东西>。
    猜你喜欢
    • 2021-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多