Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/403.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_Javascript_String_Math - Fatal编程技术网

如何将一串数字和数学运算符转换为整数答案JavaScript

如何将一串数字和数学运算符转换为整数答案JavaScript,javascript,string,math,Javascript,String,Math,例如,“22+20”将被转换为42的答案,其中42是一个整数。另一个例子是“20/10*4”,答案是8。我该怎么做?简单但危险的答案是使用eval(),如: eval("20/10*4"); // returns 8 但是必须验证传递给eval()的任何输入,否则将存在跨站点脚本(XSS)漏洞!它将运行您传递给它的任何内容,即使代码是恶意的 您还可以采取更安全但更困难的方法,编写一个解析器来解释字符串并进行相应的计算。正如Ed Cottrell所说,您可以使用eval,但您需要非常小心。相反,

例如,“22+20”将被转换为42的答案,其中42是一个整数。另一个例子是“20/10*4”,答案是8。我该怎么做?

简单但危险的答案是使用
eval()
,如:

eval("20/10*4"); // returns 8
但是必须验证传递给
eval()
的任何输入,否则将存在跨站点脚本(XSS)漏洞!它将运行您传递给它的任何内容,即使代码是恶意的


您还可以采取更安全但更困难的方法,编写一个解析器来解释字符串并进行相应的计算。

正如Ed Cottrell所说,您可以使用
eval
,但您需要非常小心。相反,您可以使用以下表达式解析器:


eval(“22+20”)
应该可以解决这个问题。快速而肮脏的方法是使用
eval(“22+20”)==42
。但这会评估任意JavaScript,而不仅仅是简单的算术运算。更好的方法是构建一个简单的上下文无关语法并解析这些表达式,以便在将其传递到
eval
之前对其进行验证,或者完全由您自己计算结果。评估碎片的数量。然后执行操作。请看这里:谢谢!我知道这是一个简单的问题,但我还是被否决了。我是javascript新手,正如我在博文中提到的,我很乐意帮忙!对于一个新的JavaScript程序员来说,这是一个完全合理的问题。:)请记住接受这个答案!
math.eval('20/10*4'); // returns 8