询问测试:计算器函数javascript

询问测试:计算器函数javascript,javascript,testing,calculator,Javascript,Testing,Calculator,我已经做了一个代码,可以运行从文本计算。当我测试它时,我没有发现任何错误。你比我聪明。也许你可以在这段代码中发现一些bug。当您知道此代码的一些改进时。如果你能让我知道就好了 我还用这段代码做了一个计算器。当然你也可以很容易地做到。您可以制作一个与输入元素一起工作的计算器,并且可以使用calculate函数运行它 //JavaScript文档“/JavaScript/calculator.js” //定义变量 Math.a=Math.b=Math.c=Math.t=Math.x=Math.y=

我已经做了一个代码,可以运行从文本计算。当我测试它时,我没有发现任何错误。你比我聪明。也许你可以在这段代码中发现一些bug。当您知道此代码的一些改进时。如果你能让我知道就好了

我还用这段代码做了一个计算器。当然你也可以很容易地做到。您可以制作一个与输入元素一起工作的计算器,并且可以使用
calculate
函数运行它

//JavaScript文档“/JavaScript/calculator.js”
//定义变量
Math.a=Math.b=Math.c=Math.t=Math.x=Math.y=Math.z=0;
//定义基数符号的根
Math.radix=函数(y,x){
如果(x的类型==“编号”){
返回数学功率(x,1/y);
}
返回Math.sqrt(y);
}
//界定权力和根源
Math.sqr=函数(数字){
返回Math.pow(数字,2);
}
Math.cbr=函数(数字){
返回Math.pow(数字,3);
}
Math.cbrt=函数(编号){
返回Math.pow(数字,1/3);
}
//定义角度函数
Math.cot=函数(数字){
返回Math.tan(Math.asin(1)-数字);
}
Math.acot=函数(数字){
返回Math.asin(1)-Math.atan(数字);
}
Math.deg2rad=函数(编号){
//它必须是Math.asin(1),因为Math.PI会将一个小数点返回到big
返回编号*数学asin(1)/90;
}
Math.rad2deg=函数(数字){
返回编号*90/数学asin(1);
}
Math.dsin=函数(数字){
返回Math.sin(Math.deg2rad(number));
}
Math.dcos=函数(编号){
返回Math.cos(Math.deg2rad(number));
}
Math.dtan=函数(数字){
返回Math.tan(Math.deg2rad(number));
}
Math.dcot=函数(数字){
返回Math.cot(Math.deg2rad(number));
}
Math.dasin=函数(数字){
返回Math.rad2deg(Math.asin(number));
}
Math.dacos=函数(数字){
返回Math.rad2deg(Math.acos(number));
}
Math.datan=函数(数字){
返回Math.rad2deg(Math.atan(number));
}
Math.dacot=函数(数字){
返回Math.rad2deg(Math.acot(number));
}
Math.grad2rad=函数(数字){
返回编号*数学asin(1)/100;
}
Math.rad2grad=函数(编号){
返回编号*100/数学asin(1);
}
Math.gsin=函数(数字){
返回Math.sin(Math.grad2rad(number));
}
Math.gcos=函数(数字){
返回Math.cos(Math.grad2rad(number));
}
Math.gtan=函数(数字){
返回Math.tan(Math.grad2rad(number));
}
Math.gcot=函数(编号){
返回Math.cot(Math.grad2rad(number));
}
Math.gasin=函数(数字){
返回Math.rad2grad(Math.asin(number));
}
Math.gacos=函数(数字){
返回Math.rad2grad(Math.acos(number));
}
Math.gatan=函数(数字){
返回Math.rad2grad(Math.atan(number));
}
Math.gacot=函数(编号){
返回Math.rad2grad(Math.acot(number));
}
//定义从运算符获取左参数的函数
函数getLeftParam(文本、游标、模式){
var leftText=text.slice(0,cursorpos);
leftText=leftText.replace(/\s*$/,“”);
如果(/[\d]$/.test(leftText)){
返回字符串(leftText.match(模式| |/(?:\d*\)?\d+(?:e[+-]\d+)?$/);
}
if(/[^\w$][abctxyz]$/.test(leftText)){
返回字符串(leftText.match(/[abctxyz]$/);
}
leftText=leftText.split(“”).reverse().join(“”);
如果(!(/^\)/.test(leftText))){
返回;
}
var cc=1,cs=1;
而(cc>0){
if(leftText.slice(cs.match)(/\(|\)/)==“(”){
cc--;
}else if(leftText.slice(cs.match)(/\(|\)/)==”){
cc++;
}否则{
返回;
}
cs+=leftText.slice(cs.search(/\(|\)/)+1;
}
cs+=leftText.slice(cs).match(/^(\s?[A-Za-z\d_$]*[A-Za-z_$])?/)[0]。长度;
返回字符串(text.slice(leftText.length-cs,cursorpos));
}
//定义相同的权利
函数getRightParam(文本、游标、模式){
var rightText=text.slice(cursorpos);
rightText=rightText.replace(/^\s*/,“”);
如果(/^-?\d+/.test(rightText)){
返回字符串(rightText.match(模式| |/^[+-]?(?:\d*\)?\d+(?:e[+-]\d+)/);
}
如果(/^[abctxyz][^\w$\(]/.test(rightText)){
返回字符串(rightText.match(/^\w/);
}
如果(!(/^(?[A-Za-z\$][\w$]*\s?\(/.test(rightText))){
返回;
}
var cc=1,cs=rightText.search(/\(|\)/)+1;
而(cc>0){
if(rightText.slice(cs.match)(/\(|\)/)==”){
cc--;
}else if(rightText.slice(cs.match)(/\(|\)/)==“(”){
cc++;
}否则{
返回;
}
cs+=rightText.slice(cs.search(/\(|\)/)+1;
}
返回字符串(text.slice(cursorpos,cursorpos+cs));
}
//可以由脚本运行的计算函数
函数计算(文本、角度模式){
text=字符串(text);
如果(文本==“”){
返回新类型错误(“空计算”);
}
text=text。替换(/\n/g,“”);
text=text.replace(/;/g,“,”);
{
//检查每个变量以确保不能运行非法的javascript函数
让vars=text.match(/[\w$]+/g);

对于(var i=0;对于这个问题,我可能是一个更好的站点。好的。我将移动它。