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

Javascript: Check if a string is a valid function name before calling 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() 的风险,这是一个私人项目,public 无法使用。

根据您的范围,您可以这样做:

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

您可以使用 eval 获取类型。

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