假设我有以下变量(它们都是字符串):
x = "4"
op1 = "+"
y = "5"
op2 = "-"
z = "3"
我如何使用这些字符串并制作一个可以给出答案6的等式?
答案 0 :(得分:1)
你能做到的一个简单方法是使用邪恶的eval,类似于:
var result = eval(x + op1 + y + op2 + z);
这将使用result
填充6
。
eval()
非常适合以字符串格式评估方程式。
当eval()
执行传递的字符串中的任何内容时,您应该先检查/清除数据,然后再在其上运行eval()
,特别是在面向公众的应用程序中。
在使用eval之前,看看this SO post关于如何检查字符串是否安全的示例,假设这是您在应用中需要担心的事情。
虽然正确使用eval()
并且管理得当并不是最糟糕的事情non-eval()
替代方案会很棒。
如果您查看Shryme's自己answer上的评论,可以概述一种有趣的方式。评论的有趣部分是myOperator.execute(number1, number2);
。
eval()
不是那么特别,并且是危险的或同样的原因,任何其他高级语言功能在不被理解和错过使用时都是危险的。
eval()
是在运行时评估代码的最常用方法
请注意,它在调用它的作用域中的字符串中执行代码。
它会盲目地执行任何恶意代码!
eval()
返回上次计算的表达式的结果。因此,如果您执行多个表达式,则仅返回最后一个表达式的结果。
eval()
可能是最常用的捷径,并且当涉及到范围问题或结果时,大多数小时的调试都会导致错误使用时不正常。
答案 1 :(得分:0)
那么,4 + 5 - 3会给你答案6.要将字符串用于等式,我相信你可以做x + op1 + y + op2 + z吗?确保它是string
类型答案 2 :(得分:0)
你可以制作一个带2个数字和1个操作符的功能,用操作员在里面做一个开关,做数学然后返回结果,然后用结果调用功能,你的第三个数字和第二个操作符和你得到你的答案