0

糸くずのない世界に住みたいです。JSLint です。しかし、無視または修正すべきかどうかわからない問題がいくつかあります。具体的には、次のようなものを取得しています。

[functionName] not defined

エラー。関数を使用する前に常に関数を定義する必要があることは認識しており、それがメッセージが実際に警告しているものだと思いますが、有効な例外があると思われる2つのケースを次に示します。

jQuery(document).ready(function($) {
   // code goes here
}

jQuery の典型的な noconflict ラッパーで始まる単純なファイルでは、"jQuery(document).ready(function($) {" が定義されていないという警告が表示されます。 。 それは理にかなっていますか?

2 番目の例は非常によく似ていますが、間違いなく回避可能です。この場合、プロジェクトに 2 つの JS ファイルがあります。上記のものと同じように見えるもの (別名、jQuery の「準備完了」イベント内にラップされた一連の DOM トリガー イベントです)。もう一方には、次のような多くのヘルパー関数があります。

function doSomethingImportant() { };
function doSomethingImpressive() { };

これらの関数は、最初の JS ファイル内で呼び出されます。JSLint はこれを好まず、最初の JS ファイルが 2 番目の JS ファイルで定義された関数を呼び出すたびに不平を言います: doSomethingImportant() { が定義されていません。しかし実際には、関数はロード時に定義され、それらの関数への呼び出しは常に DOM イベントに基づいて後で行われるため、実際の問題はないようです。

とにかく、アイデアを受け入れてください。これは、JSLint のアドバイスをフィルタリングする場合ですか、それともコードで修正する必要がありますか?

4

1 に答える 1

1

これらのエラーが発生するのは、JSLint が将来のある時点で次のことを行う可能性があると想定しているためです。

var doSomethingImpressive = function() { }

この場合、関数が定義されているファイルが関数呼び出しの後に含まれているため、エラーが発生します (ここで説明されているように)

jQuery 呼び出しについても同様です。スクリプトの順序を変更するか、エラーを安全に無視することができます。

于 2013-01-01T10:01:56.043 に答える