直接看代码吧
// 这是我们要进行计算的数学公式
let expression = "1234 + 5678";
// 把完整的公式字符串放到new Function()中,需要加上return
let result = new Function("return " + expression)();
console.log(result); // 6912
试试更复杂点的式子
let expression = "(12.1+34.2-56.78)*78.9/9.1";
let result = new Function("return " + expression)();
console.log(result); // -90.86505494505494
嗯,计算没问题!
我们再随便乱写个计算公式呢?
let expression = "(12*+34-56)=78/9"";
let result = new Function("return " + expression)();
// Uncaught SyntaxError: Invalid left-hand side in assignment
所以实际应用中,我们可能需要做下容错处理,来避免数学公式不合法时报错的场景,用try…catch…就好。
最后长这样:
try {
let expression = "1234 + 5678";
let result = new Function("return " + expression)();
} catch (err) {
alert("请输入合法的计算公式!");
}