我有以下代码。它运行一个简单的函数,并且需要运行相同的函数。 (递归)

var Skit = function(callback) {
    validSkit(Math.random(),function(skit,data){
        // Ajax callback
        if (skit == true) callback(data); // Works if skit is found
        else if (skit == false) Skit(callback); // Call Skit again [not working]
    });
}(function(skit){
    console.log("Valid skit found!");
});


我得到Skit is undefined!我知道我可以进行真正的简单function Skit()..调用。但这不是我的要求。这可能吗?

最佳答案

您应该在此处使用命名函数表达式:

(function Skit(callback) {
    validSkit(Math.random(),function(skit,data){
        // Ajax callback
        if (skit == true) callback(data); // Works if skit is found
        else if (skit == false) Skit(callback); // Call Skit again [not working]
    });
})(function(skit){
    console.log("Valid skit found!");
});


请注意,Skit名称不会在外部范围内泄漏,并且可以在堆栈跟踪中用于调试。

09-20 04:36