介绍
essy-evaluator 是一个基于 JavaScript 的数学表达式求值器,可以用于浏览器端以及 Node.js 服务端。
该模块的优势在于:
- 易用性高
- 支持各种表达式和操作符
- 非常精准,支持大精度
- 安全,支持阻止潜在的恶意绕过
下面是该模块的主要特性:
- 精度高
- 默认支持以上运算符/函数/常量
- 支持自己添加二元运算符和一元运算符(最多支持3个参数)
- 支持自己添加常量
- 支持自己添加函数
- 检测潜在的无限循环或额外长的表达式以及安全地消耗它们
- 支持错误管理
安装
你可以选择直接从 npm 安装 essy-evaluator:
npm install --save essy-evaluator
使用
essy-evaluator 模块提供一个名为 evaluate
的函数,我们可以通过传递一个字符串类型的表达式来进行求值操作。下面演示一个简单的使用例子:
import { evaluate } from 'essy-evaluator'; const result = evaluate('1 + 3 * 4 - 5 / 2') console.log(result); // -> 12.5
操作符
essy-evaluator 模块支持以下的操作符:
- 加法:
+
- 减法:
-
- 乘法:
*
- 除法:
/
- 取模:
%
- 次方:
^
- 大于:
>
- 大于等于:
>=
- 小于:
<
- 小于等于:
<=
- 等于:
==
- 不等于:
!=
- 严格等于:
===
- 严格不等于:
!==
- 逻辑与:
&&
- 逻辑或:
||
- 逻辑非:
!
- 位移左:
<<
- 位移右:
>>
- 无符号右移:
>>>
- 位与:
&
- 位或:
|
- 位异或:
^
- 位非:
~
常量
essy-evaluator 模块支持以下常量:
- $E:自然常数 e。
- $LN10:10 的自然对数。
- $LN2:2 的自然对数。
- $LOG10E:自然常数 e 以 10 为底的对数。
- $LOG2E:自然常数 e 以 2 为底的对数。
- $PI:π。
- $SQRT1_2:1/2 的平方根。
- $SQRT2:2 的平方根。
函数
essy-evaluator 模块提供了以下内置函数:
abs(x)
:返回 x 的绝对值。acos(x)
:返回 x 的反余弦值(单位:弧度)。asin(x)
:返回 x 的反正弦值(单位:弧度)。atan(x)
:返回 x 的反正切值(单位:弧度)。ceil(x)
:向上取整。cos(x)
:返回 x 的余弦值。exp(x)
:返回 e 的指数值 x。floor(x)
:向下取整。log(x)
:返回 x 的自然对数。max(x1, x2, ...)
:返回一组数中的最大值。min(x1, x2, ...)
:返回一组数中的最小值。pow(x, y)
:返回 x 的 y 次方。random()
:返回一个随机数。round(x)
:四舍五入取整,如果有第二个参数 n,则四舍五入精度为 n 位。sin(x)
:返回 x 的正弦值。sqrt(x)
:返回 x 的平方根。tan(x)
:返回 x 的正切值。
该模块还支持自定义函数的添加,如下示例代码:
import { evaluate, registerFunction } from 'essy-evaluator'; // 注册一个求和函数 registerFunction('sum', (a, b) => a + b); const result = evaluate('sum(1, 2)'); console.log(result); // -> 3
结论
在本篇文章中,我们介绍了 npm 包 essy-evaluator 的使用方法和几种操作符、常量、函数,同时也演示了如何自定义一些函数、常量和运算符。使用 essy-evaluator 可以轻松地实现数学表达式的计算,并且该模块功能强大、优秀的代码质量和灵活的 API 都是 Essy Software 公司的优势之一。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6005681881e8991b448e43c2