0

たとえば、関数がコールバックを必要としていることをライブラリユーザーに示すことができるのではないかと思います。たとえば、5つのパラメータ3が配列です。言い換えれば、コールバック引数を台無しにしないようにプログラマーに通知する方法は?コード例は次のとおりです。

function doSomething(someArray, callback) {
    var i = 0;
    for ( i = 0; i < someArray.length; i += 1) {
        callback(someArray[i]);
    }
}

プログラマーは、コールバック関数が受け入れるべきパラメーターをどのように見つけるのでしょうか?

4

2 に答える 2

3

Javascriptには引数の型チェックがなく、コールバックの実行時チェックを実行して、どの引数が期待されているかを確認する方法はありません。実行時に実行できることの1つはcallback.length、仮パラメーターとして期待されていると宣言されている引数の数を確認できることです。関数はargumentsオブジェクトを使用して引数を取得することもできるため、正式なパラメーターを定義する必要はありませんが、特定の方法でプログラムするように強制したい場合は、この方法で確認できます。詳細については、このドキュメントを参照してください。

最良のオプションは、コールバックの記述方法を完全に明確にするための優れたドキュメントです(多くの場合、サンプルコードも含まれます)。

ライブラリを少し防弾したい場合は、コールバックでスローされた例外をキャッチして処理することができますが、適切です。

function doSomething(someArray, callback) {
    var i = 0;
    for ( i = 0; i < someArray.length; i += 1) {
        try {
            callback(someArray[i]);
        } catch(e) {
            // handle any exception in the callback
        }
    }
}
于 2012-09-09T17:46:54.417 に答える
1

それを文書化することによって。通常、文書化された規則は、言語を介して強制契約を結ぶのと同じくらいうまく機能します。せいぜい、単一のオブジェクトをコールバックに渡すことができ、そのオブジェクトは名前付き属性を持つことができます。

callback({'names':[], 'types':[], value:0, etc:[] })

そうすれば、両方のサイドコードをより簡単に文書化できます。

于 2012-09-09T17:50:44.013 に答える