要实现的效果:在页面上有一个`<input>` 的输入框,用户在其输入一串数学字符串,js 接收,例如 `var str = '1+2*3-exp(4)^sin(pi)`,用函数 `calc(str)` 来计算表达式。其中表达式允许的有加减乘除乘方开方和 https://developer.mozilla.org/en-US/docs/Javascript/Reference/Global_Objects/Math 里面的符号。
我想不通的是,这个 `calc(str='')` 的 js 的函数如何比较简单地实现?想了一下,似乎只能够检测字符串,把 `'sin'` 之类的变成 `'Math.sin'`,再用 `eval`对整个(字符串)表达式进行运算。但是众所周知的是, `eval` 应该要避免,但我怎样也想不出怎样(简单地)避开这个函数。
我想不通的是,这个 `calc(str='')` 的 js 的函数如何比较简单地实现?想了一下,似乎只能够检测字符串,把 `'sin'` 之类的变成 `'Math.sin'`,再用 `eval`对整个(字符串)表达式进行运算。但是众所周知的是, `eval` 应该要避免,但我怎样也想不出怎样(简单地)避开这个函数。
