检查函数是否存在,其名称是否在字符串中?

时间:2011-12-21 15:15:20

标签: javascript

我在Javascript 中动态创建函数。有时我需要检查某个功能是否已经实际创建。

我将函数的名称作为字符串。如何根据字符串中的给定值检查函数是否存在?

3 个答案:

答案 0 :(得分:65)

您可以使用;

检查它是否在全局范围内定义
if (typeof window[strOfFunction] === "function") {
    // celebrate
    //window[strOfFunction](); //To call the function dynamically!
}

答案 1 :(得分:6)

您可以使用eval:

if ( eval("typeof stringFunction === 'function'") ){ /*whatever*/ }

答案 2 :(得分:0)

我们加2美分是因为接受的答案是正确的,但是可以从一些澄清中受益:

window["myFunctionNameHere"]是解决问题的一种简单方法,但基本上将window视为在所需范围内可访问的任何全局对象。 此外,当然,您必须确保在这样的范围内正确地正确分配该功能。

例如,对于窗口,您首先需要

<script>
    $(document).ready(function () {
        window.myFunctionNameHere = function() {
            console.log('Hello world');
        }
    });
</script>

之后,

typeof window["myFunctionNameHere"] === "function"

将按预期工作。