Javascript:在调用eval之前检查字符串是否是有效的函数名称

时间:2018-01-23 11:56:24

标签: javascript jquery eval

在调用eval之前是否可以检查字符串是否是有效的函数名?

var fnString = $('#fnInput').val()

// is there any way I can check if fnString is a valid function name 
// before calling the following line:

eval(fnString + '()');

我理解使用eval()的风险,这是一个公众无法使用的私人项目。

2 个答案:

答案 0 :(得分:1)

根据您的范围,您可以执行以下操作:

var fnString = $('#fnInput').val();
if(typeof window[fnString] === "function") {
    window[fnString]();
}

答案 1 :(得分:0)

您可以使用eval来获取类型。

if (eval(`typeof ${fnString}`) == "function") {
    eval(`${fnString}()`);
}