【发布时间】:2021-08-24 08:26:35
【问题描述】:
这是我第一次提出与代码相关的问题。
我遇到的问题如下:我正在尝试使用纯 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 变量中有 add,并且 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()。
我似乎看不出问题出在哪里,我猜它会很简单,但我的大脑并没有让我解决问题所在。
【问题讨论】:
-
您能分享一下您是如何将
add存储在operator变量中的吗? -
我先用 let num 1 创建全局变量;或让操作员;然后在用户单击按钮时更新值。
-
您如何更新
operator的值,您可以显示该代码吗? -
operatorButtons.forEach(button => button.addEventListener('click', function (e) { operation = e.target.value; }));但没关系,我设法通过一些 if else 语句完成了我的工作。感谢您的帮助。
标签: javascript function events scope