本文概述
- 1.添加MathCalc脚本
- 2.使用MathCalc脚本
- 现场例子
1.添加MathCalc脚本MathCalc脚本由@paiv编写, 其基本思想虽然难以实现, 但使用和使用非常简单。该脚本从tring解析一个数学表达式, 就像(1 + 2 + 3)/(2)这样的运算, 该运算式应返回2作为结果。
该脚本托管在GithubHist中, 因此你可以获取MathCalc脚本的副本:
然后使用script标签将文件中的脚本包括在HTML文档中:
<
!-- Include MathCalc -->
<
script src="http://www.srcmini.com/mathcalc.js">
<
/script>
你可以访问脚本的主页, 该脚本解释了更多可能的用例, 等等。解析器使用移位减少解析器实现, 该实现非常有效且没有依赖性。该库支持以下运算符:
- ()
- func(x)(调用)
- -(一元)
- ^(权力, 右联想)
- * /%
- +-
- =
- , (元组构造函数)
2.使用MathCalc脚本MathCalc提供了不同的功能, 这些功能也将进行描述和使用。我们将通过示例向大家解释:
基本用法
基本用法是从字符串表示形式解决简单的数学运算, 在这种情况下, 我们将解决变量表达式中显示的简单加法和除法, 创建该库的新实例可让你使用它的parse方法将表达式作为第一个参数。解析器将验证语法是否正确, 如果不正确, 你可以执行操作。如果正确, 则可以使用eval方法求解表达式, 仅此而已:
// Create instance of MathCalcvar calc = new MathCalc();
// Your mathematical operationvar expression = '(1 + 2 + 3) / 3';
// Evaluate expressionvar parser = calc.parse(expression);
// Check if there's a syntax errorif (parser.error) {console.error('The expression "' + expression + '" has an error', expr.error.text );
// Proceed to solve}else {// The result will be a JS number, not a stringvar result = parser.eval();
// Displays 2 as results (as expected) !console.log('The expression "' + expression + '" generates:', result);
}
请注意, eval方法的结果是一个数字, 而不是字符串, 并且根据操作, 它也可能返回NaN(不是数字)。
使用变量
要像许多数学运算一样使用变量, 可以在解析器中将它们声明为对象内的第一个参数。例如, 在这种情况下, 我们的表达式将很简单x + y, 其中x的值为1, y的值为2:
// Create instance of MathCalcvar calc = new MathCalc();
// Your mathematical operationvar expression = 'x + y';
// Evaluate resultvar parser = calc.parse(expression);
// Check if there's a syntax errorif (parser.error) {console.error('The expression "' + expression + '" has an error', expr.error.text );
// Proceed to solve}else {// The result will be a JS number, not a string// Insert the variables valuevar result = parser.eval({x: 1, y: 2});
// Displays 3 as results (as expected) !console.log('The expression "' + expression + '" generates:', result);
}
创建自定义数学函数
就像平方根函数起作用(sqrt(25)等于5)一样, 你也可以声明自己的函数。例如,
// Create instance of MathCalcvar calc = new MathCalc();
// Your mathematical operationvar expression = 'addNumbers(1 , 3)';
// Evaluate resultvar parser = calc.parse(expression);
// Declare addNumbers function in the parserparser.scope.addNumbers = function(a, b) { return a + b;
};
// Check if there's a syntax errorif (parser.error) {console.error('The expression "' + expression + '" has an error', expr.error.text );
// Proceed to solve}else {// The result will be a JS number, not a string// Insert the variables valuevar result = parser.eval();
// Displays 4 as results (as expected) !console.log('The expression "' + expression + '" generates:', result);
}
处理运行时错误
如果自定义实现的功能无法按预期工作, 那么你可能不知道在没有正确处理过程的情况下发生了什么。检查范围是否具有runtimeError属性, 以检查自定义函数是否触发了错误:
// Create instance of MathCalcvar calc = new MathCalc();
// Your mathematical operationvar expression = 'functionThatDoesnExist(1 , 3)';
// Evaluate resultvar parser = calc.parse(expression);
// Check if there's a syntax errorif (parser.error) {console.error('The expression "' + expression + '" has an error', expr.error.text );
// Proceed to solve}else {// The result will be a JS number, not a string// Insert the variables valuevar result = parser.eval();
if (parser.scope.runtimeError) {alert('Runtime JS Error');
}// Displays 4 as results (as expected) !console.log('The expression "' + expression + '" generates:', result);
}
现场例子【如何使用MathCalc在JavaScript中实现基本的数学表达式计算器】以下小提琴实现了脚本的非常基本的实现。输入充当屏幕, 你可以在其中插入表达式以及计算结果的按钮:
编码愉快!
推荐阅读
- 如何使用纯JavaScript或jQuery在客户端对表进行排序
- 讯飞输入法运用小技巧总结
- 讯飞输入法运用账户备份词库办法
- 讯飞输入法怎样设置为手机默认输入法
- 讯飞输入法怎样手绘涂鸦?
- 讯飞输入法手机版假死问题怎样处理
- 讯飞输入法PC版怎样运用讯飞麦克风?
- 讯飞输入法手机版怎样设置键盘
- 讯飞输入法PC版自定义与导入快捷短语图文详细教程