0

次のような for ループを JavaScript で作成しました。

for (var i = 0; i < element[child].length; i++) {
    ...some code...
}

しかし、JSLintを実行すると、「var i」を関数の先頭に移動する必要があると不平を言います(これは私には奇妙に思えます)。また、「i++」の++が予期しないものであると不平を言います。私が本当に奇妙だと思うのはこの部分です - なぜ ++ は予想外で、何に置き換える必要がありますか?

4

3 に答える 3

1

変数は関数の先頭で宣言する必要があります。これは JavaScript が最終的に行うことになるためです (これは「変数巻き上げ」として知られています)。

についてi++は、ご利用いただきたいと思いますi += 1JSLint ドキュメントから:

++ (インクリメント) および -- (デクリメント) 演算子は、過度のトリッキーさを助長することにより、悪いコードに寄与することが知られています。それらは、ウイルスやその他のセキュリティの脅威を可能にするという点で、欠陥のあるアーキテクチャに次ぐものです。また、プリインクリメント/ポストインクリメントの混乱により、診断が非常に困難なオフバイワン エラーが発生する可能性があります。これらの演算子を使用できる plusplus オプションがあります。

要するに、JSLint はそれが悪だと信じており、これには物議を醸しています。参照: http://jslinterrors.com/unexpected-plus-plus/

于 2013-10-15T16:33:40.653 に答える
0

正直なところ、あなたのコードは問題ないと思いますが、問題は JSLint がうるさすぎることです。JSHint を介してコードを実行すると、問題は発生しません: http://www.jshint.com/

何かがまだ正しく機能していても、JSLint は非常にうるさいことが多いことに注意してください。いつそのアドバイスを受け取り、いつそれを無視するかを知っておく必要があります:)

于 2013-10-15T16:36:57.330 に答える
0

外に出ろと言ってvar iいる。次のようになります。

function foo() {
    "use strict";
    var i, element, child;

    //...set element/child...

    for (i = 0; i < element[child].length; i += 1) {
        //...some code...
    }
}

++このトピックをカバーする素敵な投稿があります: JavaScript でインクリメント ("++") およびデクリメント ("--") 演算子を避ける理由

于 2013-10-15T16:33:14.243 に答える