javascript - 在这种情况下,为什么算术运算返回 NaN?
问题描述
通过 JS 的练习,我制作了一些非常简单的应用程序,它计算了你在咖啡馆支付的小费。当我在制定一个公式时,它准确地计算了我遇到问题的技巧,我无法解释。如果我试图在一个公式中计算所有结果,我会得到一个 NaN,但如果我创建几个新变量,我会得到我期望的结果。这是一个代码:
window.onload = function() {
const bill = document.getElementById('bill');
const company = document.getElementById('people');
const radioButtons = document.getElementsByName('service');
const calcButton = document.getElementById('calculator');
const resultDiv = document.getElementById('result-div');
function calcTips() {
let result;
let srv;
let billValue = parseFloat(bill.value);
let comValue = parseFloat(company.value);
for(let i = 0; i < radioButtons.length; i++) {
if(radioButtons[i].checked === true) {
switch(i) {
case 0:
svr = 30;
break;
case 1:
svr = 20;
break;
case 2:
svr = 15;
break;
case 3:
svr = 10;
break;
case 4:
svr = 0;
break;
}
}
}
// arithmetic operations
let temp = billValue / 100 * svr;
let temp2 = billValue + temp;
result = temp2 / comValue;
console.log(result);
}
calcButton.addEventListener('click', calcTips);
}
该代码我运行良好,但如果我制定一个公式:
result = (billValue + (billValue / 100 * svr)) / comValue;
它返回NaN,你能解释一下为什么吗?
解决方案
你声明:
let srv;
但像这样使用:
let temp = billValue / 100 * svr;
^-------------
对于修复更改,例如:
更改let srv;
为let svr;
推荐阅读
- sql - 使用 NUMBER 标识符的 CREATE TABLE 中的 SQL 错误,语法错误:意外的“NUMBER”(数字)
- python - 如何解决错误“dtype('float32') 的值太大?”
- swift - 使用 UIDropInteractionDelegate 和电影
- angular - 如何在角度中使用子路由来渲染其他视图细节
- sql - SQL 查询:按第一个和第二个日期透视数据
- javascript - 在页面重新加载之前没有 CSS 样式 - cssText 不起作用
- node.js - 为什么在 .ejs 文件中包含视图时无法识别视图?
- flutter - 如何在颤动中访问父级中子小部件的数据?
- angular - Angular ngOnChanges 无法第一次读取属性
- assembly - 在汇编中跳转到地址