带有多个变量的 javascript eval
我想使用 eval 计算以下具有多个变量的字符串 我将所有变量存储在我的对象中
let myVars = {
a : 10,
b : 20,
c : 30,
}
let str = "a+b+c+10"
// how to evaluate the string ...
I want to use eval to calculate the following string with multiple varaibles
I have all the variables stored in my object
let myVars = {
a : 10,
b : 20,
c : 30,
}
let str = "a+b+c+10"
// how to evaluate the string ...
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

发布评论
评论(5)
怀念你的温柔2025-01-22 14:43:38
我不确定我是否理解你的问题,但我会尽力回答。
eval()
方法会自动从全局上下文中获取变量。如果您想获得结果,只需保存 eval()
函数的结果即可。
// Object destructuring for easier readability
let { a, b, c } = {
a : 10,
b : 20,
c : 30,
}
let str = "a + b + c + 10";
const total = eval(str);
console.log(total); // Should be: 70
上面的代码将返回数学运算的结果。
但是,您应该永远不要使用eval()
,因为它可以任意运行任何代码。
赠意2025-01-22 14:43:38
您必须提到 a+b+c... 用于 myVars 对象,因此您有不同的方法:
let myVars = {
a : 10,
b : 20,
c : 30,
}
let str = "myVars.a+myVars.b+myVars.c+10"
console.log(eval(str))
虽然我不建议你这种方式,因为这里我们可以使用它而不需要 eval,这样会更容易。
另一种方法是使用正则表达式:
let myVars = {
a : 10,
b : 20,
c : 30,
}
let str = "a+b+c+10"
const arrayName="myVars"
str=str.replace(/([a-z]+)/gi,arrayName+".$1")
console.log(eval(str))
在这里,您可以使用正则表达式在变量后面动态添加对象名称。
或者简单地你可以做你想做的事情而无需评估(如果你愿意):
let myVars = {
a : 10,
b : 20,
c : 30,
}
let sum=Object.values(myVars).reduce((partialSum, a) => partialSum + a, 0) + 10;
console.log(sum)
~没有更多了~
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
您可以替换(未知)变量并使用
eval
(洞穴!)以获得结果。You could replace the (unknown) variables and use
eval
(cave!) for getting a result.