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

扩展功能计算器实现

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

js函数实现简单计算器

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创建完整的计算器界面:

js函数实现简单计算器

<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计算器添加键盘事件监听:

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 选项中定…

vue中实现节流函数

vue中实现节流函数

使用 Lodash 的 _.throttle 方法 安装 Lodash 并导入 throttle 方法: npm install lodash 在 Vue 组件中使用: import { thro…

react函数组件如何混合

react函数组件如何混合

混合 React 函数组件的方法 在 React 中,函数组件可以通过组合、高阶组件(HOC)、自定义 Hook 或 Render Props 等方式实现混合功能。以下是几种常见的方法: 使用自定…

react组建中如何调用函数

react组建中如何调用函数

在 React 组件中调用函数的方法 React 组件中调用函数的方式取决于函数的定义位置和作用域。以下是常见的几种方法: 在组件内部定义并调用函数 函数可以直接在组件内部定义,并通过事件或生命周…

react箭头函数如何传参

react箭头函数如何传参

箭头函数传参基础语法 箭头函数通过括号内的参数列表接收参数,单参数时可省略括号。例如: const greet = name => `Hello, ${name}!`; console.lo…

react如何阻止函数组件更新

react如何阻止函数组件更新

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