当前位置:首页 > 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();
  }
});

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

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

相关文章

vue组件实现函数调用

vue组件实现函数调用

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

react项目如何定义全局函数

react项目如何定义全局函数

定义全局函数的方法 在React项目中,可以通过以下几种方式定义全局函数,以便在整个应用中复用。 使用全局变量挂载 将函数挂载到window对象上,使其成为全局可访问的函数。这种方式简单直接,但可能…

react如何控制函数组件更新

react如何控制函数组件更新

控制函数组件更新的方法 在React中,函数组件的更新通常由状态(state)或属性(props)的变化触发。以下是几种常见的控制函数组件更新的方法: 使用React.memo进行浅比较 React…

react如何让函数组件缓存

react如何让函数组件缓存

缓存函数组件的常用方法 在React中,函数组件本身是无状态的,但可以通过以下方式实现类似类组件的缓存或优化效果: 使用React.memo进行浅比较缓存 React.memo是一个高阶组件,它会记…

react类函数中如何获取到props

react类函数中如何获取到props

在React类组件中获取props可以通过以下几种方式实现: 通过构造函数获取 在类组件的构造函数中,props会作为第一个参数传入。可以通过super(props)调用父类构造函数,并将props…

react如何在model层写函数调接口

react如何在model层写函数调接口

React 中 Model 层函数调用接口的实现 在 React 应用中,Model 层通常负责数据管理和接口调用。可以通过以下方式组织代码: 创建独立的 API 服务模块 将接口调用封装在单独的…