使用addEventListener从另一个函数调用一个函数

问题描述 投票:0回答:1

这是我第一次问与代码相关的问题。

我遇到的问题如下:我正在尝试使用纯 JavaScript 构建一个计算器。我创建了加法、减法等函数,还创建了一个名为 opera() 的函数,它接受三个参数:运算和要运算的两个数字。

示例:

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,并且 128 作为 num1num2),我试图这样做:

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

但是它说 Uncaught TypeError: operation is not a function 并且它指向函数 opera()。

我似乎看不出问题是什么,我猜这会很简单,但我的头脑不允许我解决问题所在。

javascript function events scope
1个回答
0
投票

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.