Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何从字符串调用和执行运算符?_Javascript_Operators - Fatal编程技术网

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;
  }
}