JQuery检查变量是否是函数

这个问题在这里已经有了答案:

  • 当我的名字作为字符串29答案时如何执行JavaScript函数

  • 在你的例子中,为了得到testFunction的引用,如果它在范围内,你可以使用eval 。 是的,我说过, eval ,所以你必须知道,如果你没有为函数名称清理它,那么用户可能会操纵该字符串来运行恶意代码;

    var testController = function() {
      alert('123');
    }
    
    $(function() {
      $('[mfour]').each(function(e, t) {
        var a = eval($(t).attr('mfour'));
        console.log($.isFunction(testController));
        console.log($.isFunction(a));
      })
    });
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <div mfour="testController">Hello</div>

    尝试使用window[varname] - 假定该函数在全局范围内

    喜欢这个

    DEMO

    var testController = function() {
        alert('123');
    }
    
    $(function() {
        $('[mfour]').each(function(e, t) {
            var a = $(t).attr('mfour');
            console.log($.isFunction(testController));
            console.log($.isFunction(window[a]));
            console.log(typeof window[a] === "function");
        })
    });
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
    <div mfour="testController">Hello</div>

    要检查变量是否为函数,只需添加一个检查

    typeof variableName
    

    它会返回变量的类型。

    多德..

    如果可能,请将您的函数添加到对象。 如下所示

    var obj = {
        testController: function(){
           alert('123');
        }
    };
    
        $(function() {
            $('[mfour]').each(function(e, t) {
                var a = $(t).attr('mfour');
                console.log($.isFunction(obj[a]));
            })
        });
    
    链接地址: http://www.djcxy.com/p/94839.html

    上一篇: JQuery check if variable is function

    下一篇: How to get 'typeof' of the value of a variable