2017-07-28 38 views

回答

1

首先要注意的是,您的eval不允许执行任意的,未经过处理的JavaScript。 XSS攻击可能非常令人讨厌。

其次,使用正则表达式。

function solve(math) { 
 
    return Number(eval(math.replace(/√(\d+)/g, 'Math.sqrt($1)'))); 
 
} 
 

 
console.log(solve('4 * √64 + 10'));

如果您需要能够也采取任意嵌套的表达式的平方根,您将需要一个实际的解析器,在这种情况下,你应该使用其配备到库还要评估解析的数学表达式,如math.js