我想使用 eval 來計算帶有多個變數的以下字串我將所有變數都存盤在我的物件中
let myVars = {
a : 10,
b : 20,
c : 30,
}
let str = "a b c 10"
// how to evaluate the string ...
uj5u.com熱心網友回復:
這是一個沒有評估的。它假定值是數字并忽略名稱
let myVars = {
a: 10,
b: 20,
c: 30,
}
const res = Object.values(myVars).reduce((a,b)=> a b) 10;
console.log(res)
uj5u.com熱心網友回復:
記住Eval 是邪惡的,因為它允許任意代碼執行,您可以使用此處的with塊來更改 eval 陳述句的全域命名空間:
let myVars = {
a: 10,
b: 20,
c: 30,
};
let str = "a b c 10";
let result = null;
with (myVars) {
result = eval(str);
}
console.log(result); // logs 70
同樣,我不建議使用eval.
uj5u.com熱心網友回復:
我不確定我是否理解你的問題,但我會盡力回答。
該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(),因為它可以任意運行任何代碼。
uj5u.com熱心網友回復:
您可以替換(未知)變數并使用eval(洞穴!)來獲得結果。
let
values = { a: 10, b: 20, c: 30 },
str = "a b c 10";
str = str.replace(/[a-z0-9_] /g, s => values[s] ?? s);
console.log(eval(str));
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/445695.html
標籤:javascript 变量 评估
下一篇:如何獲取類中變數的所有值?
