Pra*_*wal 6 javascript modernizr polyfills internet-explorer-11 ecmascript-2016
我正在尝试评估一个包含 power 的表达式,字符串为**。即eval("(22**3)/12*6+3/2")。问题是 Internet Explorer 11 无法识别这一点并引发语法错误。我应该使用哪种聚酯填充材料来克服这个问题?现在我正在使用Modernizr 2.6.2.
示例方程是,
((1*2)*((3*(4*5)*(1+3)**(4*5))/((1+3)**(4*5)-1)-1)/6)/7
((1*2)*((3*(4*5)*(1+3)**(4*5))/((1+3)**(4*5)-1)-1)/6)/7*58+2*5
(4*5+4-5.5*5.21+14*36**2+69/0.258+2)/(12+65)
Run Code Online (Sandbox Code Playgroud)
如果无法做到这一点,有哪些可能的替代方案?
您不能填充运算符 - 只能填充库成员(原型、构造函数、属性)。
由于您的操作仅限于调用eval,因此您可以尝试编写自己的表达式解析器,但这将需要大量工作。
(顺便说一句,无论如何你都不应该使用它eval,因为有很好的理由,我不会在这篇文章中讨论)。
另一个(hack-ish)选项是使用正则表达式来识别 的简单情况x**y并将其转换为Math.pow:
function detectAndFixTrivialPow( expressionString ) {
var pattern = /(\w+)\*\*(\w+)/i;
var fixed = expressionString.replace( pattern, 'Math.pow($1,$2)' );
return fixed;
}
eval( detectAndFixTrivialPow( "foo**bar" ) );
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1627 次 |
| 最近记录: |