当前位置:首页 > JavaScript

js函数实现简单计算器

2026-01-31 11:08:16JavaScript

实现简单计算器的JavaScript函数

创建一个简单的计算器函数需要处理基本的加减乘除运算。以下是一个实现示例:

function calculate(num1, operator, num2) {
  switch (operator) {
    case '+':
      return num1 + num2;
    case '-':
      return num1 - num2;
    case '*':
      return num1 * num2;
    case '/':
      if (num2 === 0) {
        return "Error: Division by zero";
      }
      return num1 / num2;
    default:
      return "Error: Invalid operator";
  }
}

扩展功能计算器实现

更完整的计算器可以包含连续运算和记忆功能:

class Calculator {
  constructor() {
    this.currentValue = 0;
    this.pendingOperation = null;
    this.pendingValue = 0;
  }

  operate(number, operation) {
    if (this.pendingOperation) {
      this.calculate();
    }
    this.pendingOperation = operation;
    this.pendingValue = number;
  }

  calculate() {
    switch (this.pendingOperation) {
      case '+':
        this.currentValue += this.pendingValue;
        break;
      case '-':
        this.currentValue -= this.pendingValue;
        break;
      case '*':
        this.currentValue *= this.pendingValue;
        break;
      case '/':
        if (this.pendingValue === 0) {
          return "Error: Division by zero";
        }
        this.currentValue /= this.pendingValue;
        break;
      default:
        this.currentValue = this.pendingValue;
    }
    this.pendingOperation = null;
    this.pendingValue = 0;
    return this.currentValue;
  }

  clear() {
    this.currentValue = 0;
    this.pendingOperation = null;
    this.pendingValue = 0;
  }
}

处理用户输入的HTML计算器

结合HTML和JavaScript创建完整的计算器界面:

<input type="text" id="display" disabled>
<div class="buttons">
  <button onclick="appendNumber(7)">7</button>
  <button onclick="appendNumber(8)">8</button>
  <button onclick="appendNumber(9)">9</button>
  <button onclick="setOperation('/')">/</button>

  <button onclick="appendNumber(4)">4</button>
  <button onclick="appendNumber(5)">5</button>
  <button onclick="appendNumber(6)">6</button>
  <button onclick="setOperation('*')">*</button>

  <button onclick="appendNumber(1)">1</button>
  <button onclick="appendNumber(2)">2</button>
  <button onclick="appendNumber(3)">3</button>
  <button onclick="setOperation('-')">-</button>

  <button onclick="appendNumber(0)">0</button>
  <button onclick="clearDisplay()">C</button>
  <button onclick="calculateResult()">=</button>
  <button onclick="setOperation('+')">+</button>
</div>

<script>
let currentInput = '';
let previousInput = '';
let operation = null;

function appendNumber(num) {
  currentInput += num;
  updateDisplay();
}

function setOperation(op) {
  if (currentInput === '') return;
  if (previousInput !== '') {
    calculateResult();
  }
  operation = op;
  previousInput = currentInput;
  currentInput = '';
}

function calculateResult() {
  let result;
  const prev = parseFloat(previousInput);
  const current = parseFloat(currentInput);

  if (isNaN(prev) || isNaN(current)) return;

  switch (operation) {
    case '+':
      result = prev + current;
      break;
    case '-':
      result = prev - current;
      break;
    case '*':
      result = prev * current;
      break;
    case '/':
      result = prev / current;
      break;
    default:
      return;
  }

  currentInput = result.toString();
  operation = null;
  previousInput = '';
  updateDisplay();
}

function clearDisplay() {
  currentInput = '';
  previousInput = '';
  operation = null;
  updateDisplay();
}

function updateDisplay() {
  document.getElementById('display').value = currentInput;
}
</script>

处理浮点数运算

JavaScript浮点数运算可能存在精度问题,可以使用toFixed方法限制小数位数:

function calculate(num1, operator, num2) {
  const result = /* 基本运算逻辑 */;
  return parseFloat(result.toFixed(4));
}

支持键盘输入的计算器

为HTML计算器添加键盘事件监听:

js函数实现简单计算器

document.addEventListener('keydown', function(event) {
  if (event.key >= '0' && event.key <= '9') {
    appendNumber(event.key);
  } else if (['+', '-', '*', '/'].includes(event.key)) {
    setOperation(event.key);
  } else if (event.key === 'Enter') {
    calculateResult();
  } else if (event.key === 'Escape') {
    clearDisplay();
  }
});

这些实现方案覆盖了从基础函数到完整交互式计算器的不同复杂度需求,可以根据具体应用场景选择合适的实现方式。

标签: 计算器函数
分享给朋友:

相关文章

php 函数实现

php 函数实现

PHP 函数实现基础 PHP 函数的定义使用 function 关键字,后跟函数名和参数列表。函数名不区分大小写,但建议保持一致。 function functionName($param1, $p…

vue实现异步函数

vue实现异步函数

Vue 中实现异步函数的几种方法 使用 async/await 在 Vue 方法或生命周期钩子中可以直接使用 async/await 语法处理异步操作。这种方式代码更清晰,易于理解。 methods…

vue组件实现函数调用

vue组件实现函数调用

实现 Vue 组件函数调用的方法 在 Vue 组件中实现函数调用可以通过多种方式完成,以下是常见的几种方法: 通过 methods 定义并调用函数 在 Vue 组件的 methods 选项中定义函…

react高阶函数如何写

react高阶函数如何写

高阶函数的基本概念 高阶函数(Higher-Order Function)是指接收函数作为参数或返回函数的函数。在React中,高阶函数常用于逻辑复用、组件增强或事件处理封装。 接收函数作为参数…

react函数式声明如何导出

react函数式声明如何导出

导出 React 函数式组件 在 React 中,函数式组件可以通过多种方式导出,以下是常见的几种方法: 默认导出(Default Export) 使用 export default 直接导出组件,…

react函数组件如何销毁组件

react函数组件如何销毁组件

在 React 函数组件中销毁组件 React 函数组件的销毁通常由 React 的声明式渲染机制自动处理。当组件从 DOM 中移除时,React 会自动清理其资源。以下是关键点: 触发组件销毁的条…