当前位置:首页 > JavaScript

js实现四则运算

2026-04-04 12:30:47JavaScript

使用 eval 快速实现

通过 eval 直接解析字符串表达式,但需注意安全性风险(避免用户输入恶意代码)。

const expression = "2 + 3 * 4";
const result = eval(expression);
console.log(result); // 输出 14

安全解析:Function 构造函数

利用 Function 构造函数限制执行环境,比 eval 更安全。

const calculate = (expr) => new Function(`return ${expr}`)();
console.log(calculate("10 / 2 + 1")); // 输出 6

手动解析实现

通过栈或递归下降法实现表达式解析,避免依赖 eval

function parseExpression(expr) {
  const tokens = expr.match(/(\d+|\+|\-|\*|\/|\(|\))/g);
  let index = 0;

  const parseValue = () => {
    if (tokens[index] === "(") {
      index++;
      const value = parseAddSub();
      index++;
      return value;
    }
    return parseFloat(tokens[index++]);
  };

  const parseMulDiv = () => {
    let left = parseValue();
    while (index < tokens.length && ["*", "/"].includes(tokens[index])) {
      const op = tokens[index++];
      const right = parseValue();
      left = op === "*" ? left * right : left / right;
    }
    return left;
  };

  const parseAddSub = () => {
    let left = parseMulDiv();
    while (index < tokens.length && ["+", "-"].includes(tokens[index])) {
      const op = tokens[index++];
      const right = parseMulDiv();
      left = op === "+" ? left + right : left - right;
    }
    return left;
  };

  return parseAddSub();
}

console.log(parseExpression("3 + 5 * (2 - 1)")); // 输出 8

使用第三方库

引入 mathjs 等库处理复杂表达式,支持更丰富的数学功能。

js实现四则运算

import { evaluate } from "mathjs";
console.log(evaluate("2 ^ (3 + 1)")); // 输出 16

注意事项

  • 避免直接使用 eval 处理用户输入,防止代码注入。
  • 手动解析需处理运算符优先级(乘除优先于加减)和括号嵌套。
  • 复杂需求(如变量、函数)建议使用专业库如 mathjsexpr-eval

标签: js
分享给朋友:

相关文章

js实现

js实现

JavaScript 实现方法 JavaScript 是一种广泛使用的编程语言,适用于网页开发、服务器端编程以及移动应用开发。以下是几种常见的 JavaScript 实现方法: 网页交互功能 使用…

js实现变形

js实现变形

使用 CSS 和 JavaScript 实现元素变形 在 JavaScript 中实现变形效果通常结合 CSS 的 transform 属性,通过动态修改该属性实现元素的旋转、缩放、倾斜或平移。 基…

js实现选题

js实现选题

实现选题功能的JavaScript方法 基础实现方案 使用数组存储选项,通过随机索引选取: const options = ['选项A', '选项B', '选项C', '选项D']; const r…

js实现自举

js实现自举

实现 JavaScript 自举的方法 JavaScript 自举(Bootstrap)通常指通过 JavaScript 动态加载自身或依赖的脚本,实现运行时环境的初始化或扩展。以下是几种常见实现方式…

js实现交换

js实现交换

交换变量的方法 在JavaScript中,交换两个变量的值有多种方法。以下是常见的几种实现方式: 使用临时变量 通过引入一个临时变量来存储其中一个变量的值,实现交换: let a = 1; le…

js实现滚动

js实现滚动

实现滚动效果的方法 在JavaScript中实现滚动效果可以通过多种方式完成,以下是一些常见的方法: 使用window.scrollTo() window.scrollTo()方法可以将页面滚动到指…