例如,我想评估2(3)[相当于6]。
var string = "2(3)";
var ans = eval(string);
我在Chrome控制台中键入了上述代码,他们给了我以下错误消息: TypeError:数字不是函数。
那么如何让“2(3)”返回6? THX。
答案 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);
答案 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