関数が順不同で定義されている場合、Jslint はエラーを呼び出します。
確かにjslintは厳しいですが、関数を整理するメリットはあるのでしょうか。
つまり、呼び出される前にそれらを定義するということです。
関数が順不同で定義されている場合、Jslint はエラーを呼び出します。
確かにjslintは厳しいですが、関数を整理するメリットはあるのでしょうか。
つまり、呼び出される前にそれらを定義するということです。
関数定義 (およびvar
ステートメント) は、クロージャの先頭に持ち上げられます。つまり、コードは、記述した順序とは異なる順序で実行されています。
現在、行末の を省略することほど「間違っている」ことはありませんが、jsLint は人間;
がコードを読みやすいかどうかをテストするように設計されています。飛び回ることは人間が判読できないため、無効と見なされます。
関数を呼び出す前に関数を定義すると、コードは 1 つのパス コンパイラで処理できます。それ以外の場合は、マルチパス コンパイラが必要です (これは一般的に低速です)。
1 パスの JavaScript コンパイラがいくつかあるかもしれません (ただし、私は知りません)。
コードがワンパスコンパイラで正常に実行できることを確認したいので、JSLintはそのエラーを表示するといつも思います
依存します。
これは成功します:
var x = y();
function y() { return 9; }
しかし、これは失敗します:
var x = y();
var y = function() { return 9; };
最初のスクリプトが解釈されるとfunction y
、その関数がそのスコープ全体 (この例ではグローバル スコープ) で使用可能になります。
一方、2 番目の例では、関数が に割り当てられていy
ます。他の変数と同様に、順序が重要です。