javascript - 使用 addEventListener 从另一个函数调用函数
问题描述
这是我第一次提出与代码相关的问题。
我遇到的问题如下:我正在尝试使用纯 JavaScript 构建一个计算器。我创建了加法、减法等函数,还创建了一个名为operate() 的函数,它接受三个参数:运算和要运算的两个数字。
例子:
function add(num1, num2) {
return num1 + num2;
}
function subtract(num1, num2) {
return num1 - num2;
}
function operate(operation, num1, num2) {
return operation(num1, num2);
}
Operate() 工作正常,但问题是我试图用 addEventListener 调用它但它不起作用。
在我将数字和操作存储在全局变量中之后(假设我添加了operator变量,并将12和8添加为num1和num2),我正在尝试这样做:
equalButton.addEventListener('click', function (e) {
const result = operate(operator, num1, num2);
console.log(result);
});
但它说Uncaught TypeError: operation is not a function,它指向函数operate()。
我似乎看不出问题出在哪里,我猜它会很简单,但我的大脑并没有让我解决问题所在。
解决方案
当您注意到您的操作函数时,您从未创建过操作函数,因此程序不知道它,因此当您调用操作函数时,您应该调用作为参数传递的基于加减函数的运算符,因此它应该如下所示:
function operate(operation, num1, num2) {
if(operation === '+')
return add(num1,num2);
else
return subtract(num1,num2);
}
请注意,这不是算术运算的有效解决方案,似乎您是初学者,尝试先实现您正在做的事情,然后再改进它。最好创建一个函数并在 switch case 或 if 条件中传递运算符并相应地执行操作:)
推荐阅读
- mysql - SQL 中的工作台
- duplicates - 如果 pdf 包含“重复的书签”,如何使用 itext 7 按书签拆分 pdf 文件
- c# - 如何一次从 ASP.Net webAPI modelState 中获取所有错误?
- r - 我无法在 R 中从 github 安装“loadR”(climate4R)
- c++ - 是否是clang中的一个错误,它在不使用nested-name-specifier的情况下定义了命名空间的成员
- if-statement - 如何编码:“如果(A 为真)和(当 C 为真时 B 为真)”
- javascript - 使用 JavaScript 检查单选按钮状态
- linux - 如何修复 MongoDB 致命断言 28595 错误?
- python - 如何使用 matplotlib 在 Python 中绘制 f(x) = e^x - 4x^3 + 1?
- java - 是否有与 java 的`getDeclaredMethod()` 等效的方法来测试 Typescript 中类的私有方法?