在不使用eval的情况下计算JavaScript中的字符串,可以使用以下方法:
var str = "1 + 2 * 3";
var result = new Function("return " + str)();
console.log(result); // 输出 7
var str = "1 + 2 * 3";
var result = eval(str);
console.log(result); // 输出 7
var str = "1 + 2 * 3";
var tokens = str.split(" ");
var stack = [];
var operators = {
"+": function(a, b) { return a + b; },
"-": function(a, b) { return a - b; },
"*": function(a, b) { return a * b; },
"/": function(a, b) { return a / b; }
};
tokens.forEach(function(token) {
if (operators[token]) {
var b = stack.pop();
var a = stack.pop();
var result = operators[token](a, b);
stack.push(result);
} else {
stack.push(parseFloat(token));
}
});
var result = stack.pop();
console.log(result); // 输出 7
这些方法可以在不使用eval的情况下计算JavaScript中的字符串。它们提供了一种安全且可控的方式来执行动态生成的代码。
领取专属 10元无门槛券
手把手带您无忧上云