Javascript - 评估“x(y)”?

时间:2014-03-19 11:13:26

标签: javascript html math eval

例如,我想评估2(3)[相当于6]。

var string = "2(3)";
var ans = eval(string);

我在Chrome控制台中键入了上述代码,他们给了我以下错误消息: TypeError:数字不是函数

那么如何让“2(3)”返回6? THX。

2 个答案:

答案 0 :(得分:1)

您可以使用正则表达式在任意数字之间插入*,后跟一个开括号,以便在将字符串从2(3)转换为2*(3)之后再将其传递给eval()

var string = "2(3)",

    // Convert string to array (["2", "(", "3", ")"])
    array = string.split(''),

    ans;

// Insert * between digit and open bracket  (["2", "*", "(", "3", ")"])
array.splice(string.search(/\d\(/) + 1, 0, "*");

// Convert array back to string ("2*(3)")
string = array.join("");

// Run eval (6)
ans = eval(string);

console.log(ans);

JSFiddle demo

答案 1 :(得分:0)

JavaScript没有这样做。但是,您可以创建一个返回函数的函数。第二个函数称为闭包。它非常方便,因为当它返回时,它会保留创建时所处的本地环境的副本。因此,您将乘数参数传递给返回函数的第一个函数。此函数(闭包)会在该乘数调用时对您传递给它的参数进行求值。

Far better people have explained what a closure is than me

function times(multiplier) {
  return function (num) {
    return num * multiplier;
  }
}

var bySix = times(2);
var result = bySix(3); // 6