Javascript 如何从字符串调用和执行运算符?
例如:Javascript 如何从字符串调用和执行运算符?,javascript,operators,Javascript,Operators,例如: var s = '3+3'; s.replace(/([\d.]+)([\+\-)([^,]*)/g, function(all, n1, operator, n2) { r = new Number(n1) ??? new Number(n2); return r; } ); 注意:不使用eval() 这是不可能的,但他给出了一个很好的实现,如下所示。密码由 你的正则表达式有点破了 /([
var s = '3+3';
s.replace(/([\d.]+)([\+\-)([^,]*)/g,
function(all, n1, operator, n2) {
r = new Number(n1) ??? new Number(n2);
return r;
}
);
注意:不使用eval()
这是不可能的,但他给出了一个很好的实现,如下所示。密码由
你的正则表达式有点破了
/([\d.]+)([\+\-)([^,]*)/g
应该是
/([\d.]+)([+-])([\d+]+)/g
然后,您可以打开操作员:
function (_, a, op, b) {
switch (op) {
case '+': return a - -b;
case '-': return a - b;
}
}
s.replace(/(\d+)\s*([+-])\s*(\d+)/g,函数(全部,s1,op,s2){
变量n1=数量(s1),n2=数量(s2);
返回(op='+')?(n1+n2):(n1-n2);
});
看起来像是方便使用eval()
的少数几种情况之一。new Function()
也禁止使用吗?出于好奇,为什么不使用eval()
呢?您可能会发现以下系列很有趣:。它们是关于计算机程序解释的小课程,用Javascript编写,最后IMO的目标是实现一个类似于语言的小方案。+1用于使用对象查找运算符函数,而不是if/else或switch/case。
/([\d.]+)([+-])([\d+]+)/g
function (_, a, op, b) {
switch (op) {
case '+': return a - -b;
case '-': return a - b;
}
}