Создание универсального калькулятора с помощью JavaScript: изучение различных операторных функций

В этой статье блога мы погрузимся в мир JavaScript и рассмотрим различные методы создания калькулятора, способного выполнять различные математические операции. Мы рассмотрим несколько подходов, каждый из которых использует разные операторные функции в JavaScript. Итак, начнём!

Метод 1: использование операторов if…else

function calculator(operator, num1, num2) {
  if (operator === '+') {
    return num1 + num2;
  } else if (operator === '-') {
    return num1 - num2;
  } else if (operator === '*') {
    return num1 * num2;
  } else if (operator === '/') {
    return num1 / num2;
  } else {
    return 'Invalid operator';
  }
}
console.log(calculator('+', 5, 3)); // Output: 8
console.log(calculator('-', 5, 3)); // Output: 2
console.log(calculator('*', 5, 3)); // Output: 15
console.log(calculator('/', 6, 3)); // Output: 2
console.log(calculator('%', 6, 3)); // Output: Invalid operator

Метод 2: использование оператора Switch

function calculator(operator, num1, num2) {
  switch (operator) {
    case '+':
      return num1 + num2;
    case '-':
      return num1 - num2;
    case '*':
      return num1 * num2;
    case '/':
      return num1 / num2;
    default:
      return 'Invalid operator';
  }
}
console.log(calculator('+', 5, 3)); // Output: 8
console.log(calculator('-', 5, 3)); // Output: 2
console.log(calculator('*', 5, 3)); // Output: 15
console.log(calculator('/', 6, 3)); // Output: 2
console.log(calculator('%', 6, 3)); // Output: Invalid operator

Метод 3. Использование сопоставления объектов

const operators = {
  '+': (a, b) => a + b,
  '-': (a, b) => a - b,
  '*': (a, b) => a * b,
  '/': (a, b) => a / b,
};
function calculator(operator, num1, num2) {
  if (operator in operators) {
    return operators[operator](num1, num2);
  } else {
    return 'Invalid operator';
  }
}
console.log(calculator('+', 5, 3)); // Output: 8
console.log(calculator('-', 5, 3)); // Output: 2
console.log(calculator('*', 5, 3)); // Output: 15
console.log(calculator('/', 6, 3)); // Output: 2
console.log(calculator('%', 6, 3)); // Output: Invalid operator

Метод 4: реализация указателей на функции

function add(a, b) {
  return a + b;
}
function subtract(a, b) {
  return a - b;
}
function multiply(a, b) {
  return a * b;
}
function divide(a, b) {
  return a / b;
}
function calculator(operator, num1, num2) {
  const operators = {
    '+': add,
    '-': subtract,
    '*': multiply,
    '/': divide,
  };
  if (operator in operators) {
    return operators[operator](num1, num2);
  } else {
    return 'Invalid operator';
  }
}
console.log(calculator('+', 5, 3)); // Output: 8
console.log(calculator('-', 5, 3)); // Output: 2
console.log(calculator('*', 5, 3)); // Output: 15
console.log(calculator('/', 6, 3)); // Output: 2
console.log(calculator('%', 6, 3)); // Output: Invalid operator

Метод 5: использование функции eval() (внимание: угроза безопасности)

function calculator(operator, num1, num2) {
  const expression = `${num1} ${operator} ${num2}`;
  return eval(expression);
}
console.log(calculator('+', 5, 3)); // Output: 8
console.log(calculator('-', 5, 3)); // Output: 2
console.log(calculator('*', 5, 3)); // Output: 15
console.log(calculator('/', 6, 3)); // Output: 2
console.log(calculator('%', 6, 3)); // Output: NaN

В этой статье мы рассмотрели несколько методов создания универсального калькулятора на JavaScript с использованием различных операторных функций. Мы рассмотрели подходы с использованием операторов if…else, операторов переключения, сопоставления объектов, указателей на функции и даже функции eval() (с предупреждением о рисках безопасности). Каждый метод позволяет выполнять основные математические операции, такие как сложение, вычитание, умножение и деление. Понимая эти методы, вы сможете создавать мощные калькуляторы, отвечающие конкретным потребностям.