首页 > 解决方案 > 使用 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变量,并将128添加为num1num2),我正在尝试这样做:

equalButton.addEventListener('click', function (e) {
    const result = operate(operator, num1, num2);
    console.log(result);
});

但它说Uncaught TypeError: operation is not a function,它指向函数operate()。

我似乎看不出问题出在哪里,我猜它会很简单,但我的大脑并没有让我解决问题所在。

标签: javascriptfunctioneventsscope

解决方案


当您注意到您的操作函数时,您从未创建过操作函数,因此程序不知道它,因此当您调用操作函数时,您应该调用作为参数传递的基于加减函数的运算符,因此它应该如下所示:

function operate(operation, num1, num2) {
   if(operation === '+')
      return add(num1,num2);
  else 
     return subtract(num1,num2);
}

请注意,这不是算术运算的有效解决方案,似乎您是初学者,尝试先实现您正在做的事情,然后再改进它。最好创建一个函数并在 switch case 或 if 条件中传递运算符并相应地执行操作:)


推荐阅读