質問

私はJSLintを使用してほとんどの外部Javascriptファイルを検証していますが、最も多くのエラーが発生するのは、定義される前に使用されている関数にあります。

これは本当に心配すべき問題ですか

Firefox、IE7、Chromeは気にしないようです。人気のある init()(よく使う)のような関数は、私にとって理にかなっているため、通常は一番上にあります( main()に似ているふりをするのが好きです) JSLintによると、ファイルの最後にプッシュする必要があります。

役に立ちましたか?

解決

function キーワードを使用して関数を宣言する場合、宣言する前にそれらを使用できます。ただし、別のメソッドを使用して関数を宣言する場合(関数式または Function コンストラクターを使用するなど)、使用する前に関数を宣言する必要があります。 このページをご覧ください詳細については、Mozilla Developer Network。

すべての関数を function キーワードで宣言すると仮定すると、プログラミング形式の質問になると思います。個人的には、論理的に見えるように関数を構造化し、コードをできるだけ読みやすくすることを好みます。たとえば、あなたのように、 init 関数を一番上に置きます。すべてが始まる場所だからです。

他のヒント

これは最高評価のグーグルヒットであり、他の人はjslintツールで最初にそれを見ることができないかもしれないので、「誤った順序の定義を許容」というオプションがあります;このタイプのエラーを隠すことができます。

/*jslint latedef:false*/

jshintを使用している場合、 latedef nofunc に設定できます。これにより、後の関数定義のみが無視されます。

ドキュメント- http://www.jshint.com/docs/options/#latedef

使用例:

/* jshint latedef:nofunc */

noop();

function noop() {}

これが役立つことを願っています。

jslintのWebサイト( http://www.jslint.com/lint.html )から、 / * global * /ディレクティブにより、他の場所で宣言されていると想定される変数を設定できます。

例を次に示します(ファイルの先頭に置きます):

/*global var1,var2,var3,var4,var5*/

実際には:true:falseは私の経験からは必要ありませんが、サイトで読んだものから推奨されているようです。

最初のグローバルステートメントが / * と同じ行にあることを確認してください。そうでない場合は壊れます。

すべてのファイルの jshint でこの警告を無効にするには、これを .jshintrc ファイルに配置します:

{
   "latedef": false
}

.jshintrc ファイルで、次を設定します。

  "latedef": "nofunc",

latedefオプションが削除されたことは非常に残念です。これは、上部にインターフェースを持つ「クラス」を作成しようとする場合に不可欠です。つまり、

function SomeClass() {
   var self = this;
   self.func = func;

   function func {
      ...
   }
}

このスタイルは非常に一般的ですが、定義される前にfuncが「使用」されるため、jsLintを渡しません。 「メンバー」関数ごとにグローバルを使用することは、非常に苦痛です。

問題のある関数は常に上部で宣言できます

eg: var init;

....ただし、「var」を削除する必要があります。さらに真の定義に到達したら:

init = function(){ };

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top