2

私はWebアプリを書いています(そして正直なところ、stackoverflowなしで何をするかわかりません)が、これが私がしていることです。

私のユーザーはカスタム関数を定義できます。すぐに誰かが私に指摘したのは、関数が空白であることをユーザーに警告する方法があるはずです。

たとえば、ユーザーは自分の関数を次のように書くことができます

cFunctionRun: function () {}

残念ながら、関数の作成方法を制御できません。つまり、これは非常にうまくいく可能性があります。

だから今、私はこの関数が何もしないことをユーザーに伝える方法を見つけなければなりません。なぜなら、それができることは何もないからです。これが不可能な場合は問題ありませんが、質問しても問題ないと思いました。

cFunctionRun部分の詳細については、このstackOverflowの質問を確認してください。jQueryはカスタム関数を追加された要素にバインドします

4

2 に答える 2

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
于 2013-02-07T14:51:42.920 に答える
0

関数で使用toStringし、空白を削除して、関数が空かどうかを確認できます。

var isEmpty = cFunctionRun.toString().replace(/\s+/g, '') === 'function(){}';
于 2013-02-07T14:51:06.837 に答える