Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript ribed),从而避免使用eval以及与之相关的任何安全问题。我相信它确实做到了这一点(但处理相当复杂的数学问题),所以您可以看看它们的源代码。使用eval()几乎从来都不是一个好主意。另外,还不清楚为什么您认为需要eval()。为什么您认为需要使用eva_Javascript_String_Eval_Calculator - Fatal编程技术网

Javascript ribed),从而避免使用eval以及与之相关的任何安全问题。我相信它确实做到了这一点(但处理相当复杂的数学问题),所以您可以看看它们的源代码。使用eval()几乎从来都不是一个好主意。另外,还不清楚为什么您认为需要eval()。为什么您认为需要使用eva

Javascript ribed),从而避免使用eval以及与之相关的任何安全问题。我相信它确实做到了这一点(但处理相当复杂的数学问题),所以您可以看看它们的源代码。使用eval()几乎从来都不是一个好主意。另外,还不清楚为什么您认为需要eval()。为什么您认为需要使用eva,javascript,string,eval,calculator,Javascript,String,Eval,Calculator,ribed),从而避免使用eval以及与之相关的任何安全问题。我相信它确实做到了这一点(但处理相当复杂的数学问题),所以您可以看看它们的源代码。使用eval()几乎从来都不是一个好主意。另外,还不清楚为什么您认为需要eval()。为什么您认为需要使用eval来解决这个问题?我正在用JS编写简单的计算器解析器,所以我认为结果应该由eval()计算,因为另一种方法是严格使用诸如“+”、“-”、“*”、“/”之类的运算符?要“解码”和计算的原始表达式将是“2+3-(4*3)/7”。我将其拆分为字符,然


ribed),从而避免使用
eval
以及与之相关的任何安全问题。我相信它确实做到了这一点(但处理相当复杂的数学问题),所以您可以看看它们的源代码。使用
eval()
几乎从来都不是一个好主意。另外,还不清楚为什么您认为需要
eval()
。为什么您认为需要使用
eval
来解决这个问题?我正在用JS编写简单的计算器解析器,所以我认为结果应该由eval()计算,因为另一种方法是严格使用诸如“+”、“-”、“*”、“/”之类的运算符?要“解码”和计算的原始表达式将是“2+3-(4*3)/7”。我将其拆分为字符,然后(在几个函数识别所有符号后)将其计算为字符串。因此,我还需要将数学运算符作为字符串传递,而不是标准的“加、减、除、乘”JS(或其他语言)o运算符。我希望所有内容都从初始字符串数学表达式计算。您可以编写一个解析器(对于您描述的简单数学来说,这并不难),从而避免使用
eval
以及与之相关的任何安全问题。我相信这一点是正确的(但可以处理相当复杂的数学),那么您可以看看他们的源代码。像我这样使用eval()和您的代码有什么区别?eval()用于执行字符串ex:var a=5,b=10;var temp=“a+b”;eval(temp)将再打印15条信息参考:好的,但是如果我想让JS识别给定的表达式,如“2+3-(4*3)/7,该怎么办,如果它找到“+”,则它知道它是加法运算符,然后执行相应的函数。我不想只在函数中执行严格的操作,比如“return2+3”,我想让JS识别出“+”是sum,然后执行加法运算。我希望我想做的事情很清楚。你只是把字符串解析成int,甚至没有计算:)我想让JS识别给定的数学运算符(在表达式中,give为string),然后进行计算,但重要的是要识别“+”是加法,“-”是减法,“/”是除法,等等使用eval有什么区别()就像我和你的代码一样?eval()用于执行字符串ex:var a=5,b=10;var temp=“a+b”;eval(temp)将再打印15条信息参考:好的,但是如果我想让JS识别给定的表达式,如“2+3-(4*3)/7”,该怎么办,如果它找到“+”,那么它知道它是加法运算符,然后它执行相应的函数。我不想只在函数中严格执行,比如“return2+3”,我想让JS识别出“+”是sum,然后做加法运算。我希望我能清楚地知道我想做什么。你只是把字符串解析成int,甚至没有计算:)我想让JS识别给定的数学运算符(在表达式中作为字符串给出),然后进行计算,但识别出“+”是加法对我来说很重要,“-”是减法,“/”是除法,所以请看,我希望这个*表达式变量被拆分为字符数组。然后在循环中JS处理“+”、“-”等等,我想让它知道它应该是加法和减法运算。所以我不想严格地执行“+”和“-”,但需要JS将char“+”解释为加号运算符。我想这就是解析器的想法?我绝对不坚持eval(),但我认为我的问题可以通过eval()解决。简单地说,我希望JS“尤其”能够识别表达式中作为字符串给出的数学符号,并像计算器一样进行解析。您提出了一个问题,称为“返回作为字符串参数传递的值时使用eval()的正确方法”。您没有问过一个名为“如何用JavaScript编写解析器”的问题。所以,我回答了你的问题:你的评估没有正确使用。如果你想解决你的问题,问一个合适的问题,或者直接转到,例如,看看他们是怎么做的。这演示了如何将表达式作为一个完整的字符串进行计算(这似乎比你目前的想法要好),没有什么能阻止你将字符串拆分为某种数组(无论出于何种目的)。我想我会这样做(快速编码只是为了展示我的想法)它比我的“eval()想法”好吗?它是关于“循环通过字符数组,如果找到数字之间是一些数学运算符,执行适当的函数”。因此,结果是2+3=5,因为第一个nums和运算符是“2+3”。@Chris92带有eval的代码是错误的。这是一个非常错误的代码。您需要做的是为每个表达式动态构建解决方案树,其中树的根将是您的解决方案,叶将是顶级操作(例如,
()
或乘/除表达式)该实现实际上并不需要实际的树结构,也可以使用递归或堆栈数据结构来实现。事实上,您需要编写一个编译器的轻版本,这需要大量的时间和一些知识。看,我希望将这个*表达式变量拆分为字符数组。然后循环中的JS方法是“+”、“-”等等在上,我想让它知道应该是加法和减法运算。所以我不想严格地执行“+”和“-”,但需要JS将char“+”解释为加号运算符。我认为这就是解析器的想法?我绝对不坚持eval(),但我认为我的问题可以通过eval()解决。简单地说,我想要JS“特别”要识别表达式中的数学符号,请像计算器一样解析字符串。您提出了一个问题,称为“返回作为字符串参数传递的值时使用eval()的正确方法”。您没有提出“如何用JavaScript编写解析器”的问题.因此,我回答了你的问题:你的eval没有正确使用。如果你想解决你的问题,请问一个正确的问题,或者直接转到,例如,看看他们是怎么做的。这演示了
eval
ing将表达式作为一个完整的字符串(这似乎比你目前的想法更好),没有什么可以阻止您将字符串拆分为某种数组(无论出于何种目的)。我想我会这样做(快速编码只是为了显示我的
var nums = ['2','3','1'], sum = ['+']; 
function calculate(a,b,c,d,e)
{
        console.log('Calculating...(plus separators): '+a+' '+b+' '+c+' '+d+' '+e);
        console.log('Calculating...(comma separators): ',a,' ',b,' ',c,' ',d,' ',e);

        console.log('a :',a);
        console.log('b :',b);
        console.log('c :',c);
        console.log('d :',d);
        console.log('e :',e);
    return eval(a+b+c+d+e);
};
console.log('RESULT: ',calculate(nums[0],sum[0], nums[1],sum[0], nums[2]));
function calculateP(a,c,e)
{
        console.log('Calculating...(plus separators): '+a+' '+c+' '+e);
        console.log('Calculating...(comma separators): ',a,' ',c,' ',e);

        console.log('a: ',a);
        console.log('c: ',c);
        console.log('e: ',e);
    return eval(a+c+e);
};
console.log('precise RESULT: ',calculateP(nums[0], nums[1], nums[2]));
function plus(a,b) {
  return a+b;
}

function minus(a,b) {
  return a-b;
}

var expression = 'minus(plus(2, 3),minus(5,3))';

console.log('(2+3)-(5-3) ',eval(expression));

    expression = 'plus(plus(2, 3),minus(5,3))';

console.log('(2+3)+(5-3) ',eval(expression));
var nums = ['2','3','1'], sum = ['+']; 
function calculate(nums)
{
  var res =0;
  for(var i=0;i<nums.length;i++){
    res= res+(parseInt(nums[i]));
  }
    return res;
};

 console.log('RESULT: ',calculate(nums))
var expression = '2 + 3 - (4 * 3) / 7';

console.log(eval(expression));
function cos(input) {
  return Math.cos(input);
}

function ln(input) {
  return Math.log(input);
}

var expression = '2 + 3 - cos(4 * 3) / ln(7)';

console.log(eval(expression));