javascript - 为什么我的函数总计在计算器中不起作用
问题描述
我需要一点帮助。我刚开始使用 Javascript 编程。我正在尝试做一个计算器。我对“=”有疑问。当我点击它时,不要给我看分数。请告诉我,我哪里做错了?
这是我的 git:https ://github.com/madzikowael/calculator/blob/main/script.js
const calculate = () => {
let action;
if(!previousOperation || !actualOperation) {
return
}
const previous = parseFloat(previousOperation)
const actual = parseFloat(actualOperation)
if(isNaN(previous) || isNan(actual)){
return
}
switch (operation) {
case '+':
action = previous + actual
break
case '-':
action = previous - actual
break
case '×':
action = previous * actual
break
case '÷':
if(actual === 0) {
deleteScore()
return
}
action = previous / actual
break
case '^':
action = Math.pow(previous, actual)
break
case '√':
action = Math.pow(previous, 1 / actual)
break
case '%':
action = previous / 100 * actual
break
case 'log':
action = Math.log(previous) / Math.log(actual)
break
default:
return
}
actualOperation = action
operation = undefined
previousOperation = ''
}
const chooseOperation = (operator) => {
if(actualOperation === '') {
return
}
if(previousOperation !== '') {
const previous = previousOperation.innerText
if(actualOperation.toString() === '0' && previous[previous.length - 1] === '÷') {
deleteScore()
return
}
calculate()
}
operation = operator;
previousOperation = actualOperation;
actualOperation = '';
}
const updateScore = () => {
actualScore.innerText = actualOperation;
if(operation != null) {
previousScore.innerText = previousOperation + operation
} else {
previousScore.innerText = ''
}
}
numbers.forEach((numb) => {
numb.addEventListener('click', () => {
addNumber(numb.innerText);
updateScore();
})
})
del.addEventListener('click', () => {
deleteNumber();
updateScore();
})
operators.forEach((operator) => {
operator.addEventListener('click', () => {
chooseOperation(operator.innerText);
updateScore();
})
})
total.addEventListener('click', () => {
calculate();
updateScore();
})
clean.addEventListener('click', () => {
deleteScore();
updateScore();
})
解决方案
这是因为这条线:
if(isNaN(previous) || isNan(actual)){
return
}
该功能isNan()
不存在。因此抛出错误并calculate()
中止该函数。
将其替换为:
if(isNaN(previous) || isNaN(actual)){
return
}
推荐阅读
- javascript - JS检查嵌套数组是否与另一个数组具有相同的值
- javascript - 将数据写入其帐户后重定向用户
- c++ - 当 C++ 中涉及继承时,模板有何特别之处?
- typescript - 用于推断递归类型的打字稿提示?
- c# - Xamarin 表单为标签/列表视图创建创建条件
- spring-boot - Spring Boot 2.5 SocketTimeoutException 仅在 Github 操作中
- python-3.x - Python3 循环:超出时间限制,代码优化
- laravel - 如何让 vue 组件在任何地方渲染?
- android - 如何根据特定用户 kotlin 显示内容
- vue.js - 如何选择选择中的第一个选项作为Vue3中的默认选项?