Javascript 函数检查

Javascript 函数检查,javascript,jquery,function,Javascript,Jquery,Function,我已经搜索并找到了许多关于这方面的讨论,但似乎没有一个解决方案有效 情景: 我有一个处理复杂计算器的中心脚本。此计算器有1000多个单独的计算器,每个计算器都通过函数调用 这些函数中的每一个都是根据用户选择动态加载的(降低开销等) 所以,核心脚本与此类似: var m1 = 5; var m2 = 8; dynamicfunction1(); dynamicfunction2(); var m3 = m1 + m2; 例如,动态函数可以改变m1的值,具体取决于条件(我将保持示例简短) 因

我已经搜索并找到了许多关于这方面的讨论,但似乎没有一个解决方案有效

情景: 我有一个处理复杂计算器的中心脚本。此计算器有1000多个单独的计算器,每个计算器都通过函数调用

这些函数中的每一个都是根据用户选择动态加载的(降低开销等)

所以,核心脚本与此类似:

var m1 = 5;
var m2 = 8;


dynamicfunction1();
dynamicfunction2();

var m3 = m1 + m2;
例如,动态函数可以改变m1的值,具体取决于条件(我将保持示例简短)

因此,我想在运行函数之前先检查它是否存在,如果不存在,则忽略它

因此,我打算:

FncChk("dynamicfunction1");
FncChk("dynamicfunction2");
下面是一个示例,我创建了一个函数,但尝试测试2(显然1不存在)。问题出现在window[](applicated而不是eval();)上,我似乎无法将字符串转换为函数名来执行它

function MonkeysEatBananas() {
    alert("Function triggered, Monkeys are eating bananas");
}

function FncChk(FuncName) {
    var fn = window[FuncName];
    alert(fn + "---> " + FuncName);

    if (typeof fn == "function" ){alert("Run function hetttre");}else{alert("Function "+FuncName+" not loaded");}
    }
}



FncChk("MinionsEatBananas");

FncChk("MonkeysEatBananas");
我可以使用以下内联语句将函数作为函数进行验证:

if(  typeof MonkeysEatBananas == "function" ){alert("Run function here");}else{alert("Function "+FuncName+" not loaded");} 
但当我将它封装在一个函数中,以便使用更广泛的用户和更少的代码时,情况就不一样了。我只知道我在做一些愚蠢的事情,但我已经为此浪费了好几个小时,所以是时候发射照明弹了!任何正确方向的踢腿都值得欣赏。

您可以使用in操作符:

if("func" in window) func();
您可以看看OOP,动态函数名总是一个坏主意…

您可以使用in运算符:

if("func" in window) func();
您可以看看OOP,动态函数名总是一个坏主意…

您可以直接使用
窗口[“functionName”]
,只要函数是全局的

要测试函数是否正确,请使用
typeof window[“functionName”]=“function”
,要执行,只需添加
()

函数abc(){console.log(“abc”)}
函数runFunc(f)
{
var fn=窗口[f];
//console.log(fn)
if(typeof fn==“function”)fn();else console.log(f+“未找到”)
}
runFunc(“abc”);
runFunc(“def”)只要函数是全局函数,就可以直接使用
窗口[“functionName”]

要测试函数是否正确,请使用
typeof window[“functionName”]=“function”
,要执行,只需添加
()

函数abc(){console.log(“abc”)}
函数runFunc(f)
{
var fn=窗口[f];
//console.log(fn)
if(typeof fn==“function”)fn();else console.log(f+“未找到”)
}
runFunc(“abc”);

runFunc(“def”)Idk从何处开始。为什么要标记jQuery?不要在全局窗口空间中执行所有操作。使用对象文字的属性和“函数”!==\'函数“\有将近800000行计算。超过1000个计算器您的代码似乎工作正常。看看这个,看看我没有做什么,你在做什么。Idk从哪里开始。为什么要标记jQuery?不要在全局窗口空间中执行所有操作。使用对象文字的属性和“函数”!==\'函数“\有将近800000行计算。超过1000个计算器您的代码似乎工作正常。看看这个,看看我没有做过什么,你在做什么。谢谢乔纳斯,那没用。我希望验证它是否是一个简单函数名中的函数。所以函数IsItFunction(somefunctionnamecheck){如果是,执行,如果不是函数忽略}谢谢Jonas,这不起作用。我希望验证它是否是一个简单函数名中的函数。所以函数IsItFunction(somefunctionnamecheck){如果是,执行,如果不是函数忽略}感谢@freedom-m这是一个很好的解释。我希望这个帖子能帮助别人,你的答案很全面。在搜索过程中,我所能找到的只是奇怪的一行程序等,而不是实际的工作解决方案。荣誉:)谢谢@freedom-m这是一个很好的解释。我希望这个帖子能帮助别人,你的答案很全面。在搜索过程中,我所能找到的只是奇怪的一行程序等,而不是实际的工作解决方案。荣誉:)