使用eval的Javascript字符串计算
我正在构建一个简单的Javascript计算器,它使用eval()计算字符串。我遇到了几个问题使用eval的Javascript字符串计算,javascript,Javascript,我正在构建一个简单的Javascript计算器,它使用eval()计算字符串。我遇到了几个问题 如果我运行类似于eval(“023+11”)的程序,返回30。我应该改为24岁吗 我可以选择将百分比转换为小数eval(“025*0.01”),当我预期为0.25时,它返回0.21 运行某些数字,如eval(“0.7*0.01”)返回0.0069999999,而我预期为0.007。其他时候,当我运行eval(“0.25*0.01”)时返回0.0025,这是正确的 在部署时,我担心eval()中的其他问
eval(“023+11”)
的程序,返回30。我应该改为24岁吗eval(“025*0.01”)
,当我预期为0.25时,它返回0.21eval(“0.7*0.01”)
返回0.0069999999,而我预期为0.007。其他时候,当我运行eval(“0.25*0.01”)
时返回0.0025,这是正确的在部署时,我担心eval()中的其他问题可能会导致错误的计算。是否存在用户可能遇到的任何其他问题。有没有更好的方法来构建计算器?如何解决我遇到的问题(我想对于以0开头的输入,我可以去掉0)?相关:|使用
eval
不是好的做法。最好使用parseInt
,parseFloat
并进行算术运算。除了不正确的计算之外,你还应该担心有人入侵你的网站并使你的整个服务器宕机,因为你使用的是eval
…更常见的是,出于安全考虑,eval
不计算数学表达式,而是计算JS代码。这是有区别的。如果你有3-+-+-5
,那不是一个有效的数学表达式,但是返回-2
的是有效的JS代码<代码>3--然而,它不是有效的数学表达式,但因为它是无效的代码,所以您会得到一个奇怪的错误。如果您希望3^2
执行“power of”,那么您会得到一个惊喜,因为它是按位异或的。power运算符是**
,但它不能使用负基:-3**2
是语法错误<代码>评估充满了潜在问题。