如何判断函数是否为空?

时间:2013-02-07 14:44:31

标签: javascript jquery

我正在编写一个Web应用程序(老实说,我不知道没有stackoverflow会做什么),但这就是我正在做的事情。

我的用户可以定义自定义功能,有人指出我应该有一种方法来警告用户该功能是空白的。

例如,用户可以将他的功能写成这样的

cFunctionRun: function () {}

可悲的是,我无法控制如何创建一个函数,这意味着可能会发生这种情况。

所以现在我必须找到一种方法来告诉用户这个函数什么都不做,因为它没有什么可以做的。如果这是不可能的,那就好了,但我认为这不会有问题。

有关cFunctionRun部分的更多信息,请查看此stackOverflow问题jQuery bind custom function to appended element

2 个答案:

答案 0 :(得分:2)

我认为这样的事情应该有效:

假设你有类似的东西:

var functions = {
    aFunctionRun: function () {return false;}
    bFunctionRun: function ('foobar') {}
    cFunctionRun: function () {}
}

试试这段代码:

function isEmpty(function){
    // Get the string from the function;
    var funcString = function.toString();
    // Cut off the part before the actual content of the function
    funcString = funcString.substr(funcString .indexOf(')'))
        .replace(/function|[(){};]/g,'') // remove the function keyword, and the following characters: (){};
        .trim();                         // remove any leading / trailing whitespaces and 
    return funcString === '';            //check if it's an empty string.
}

isEmpty(functions.aFunctionRun); // returns false
isEmpty(functions.bFunctionRun); // returns true
isEmpty(functions.cFunctionRun); // returns true

答案 1 :(得分:0)

您可以在函数上使用toString并删除空格以查看该函数是否为空。

var isEmpty = cFunctionRun.toString().replace(/\s+/g, '') === 'function(){}';