3

現在、Web アプリケーションで JavaScript に対して JSLint を実行していて、解決に支援が必要なエラーが発生しています。

を。私が得ている最初のエラーは次のとおりです: JS Lint: Unused Variable 'n'.

 $.each(collection, function (n, item) {
                var temp = item.Id;
        // do further processing
    });

b. 次のような自己実行関数で宣言されたすべてのJavaScriptがあります。

(function ($, undefined) {
// further javascript code
}
(jQuery));

上記のパターンは、$ が他の JavaScript ライブラリと競合するのを防ぎ、undefined が再定義されるのを防ぎます。ただし、次のエラーが表示されます。

JS Lint: 識別子が必要でしたが、代わりに「未定義」(予約語) が表示されました。JS Lint: 未使用の変数「未定義」。

c. JS Lint: エスケープされていない「-」。

 if (value.match(/^[A-Z0-9._%+-]+@(?:[A-Z0-9-]+\.)+[A-Z]{2,4}$/i)) {
    return true;
 }

d. JS Lint: タイプの混乱: 'printer-': 文字列と '(': number.

  var frameName = "printer-" + new Date().getTime();

数値、整数、およびその他のデータ型で、タイプの混乱のエラーが多数発生します。これらの取得を防ぐ方法について何か考えはありますか?

e. JS Lint: 安全でない '^'。

var value = value.replace(/[^\d\.,\-]/gi, '');

f. JS Lint: ループ内で関数を作成しないでください。

for (i = 0, l = txts.length; i < l; i += 1) {
        if (/^[0-9]+$/.test(txts[i].getAttribute("maxlength"))) {
            var func = function () {
                //do some processing
            };
        }
    }
4

2 に答える 2

3

A.) 参照: http://api.jquery.com/jQuery.each/

あなたが使用することができます:

$.each(collection, function() {
    doSomething(this); // this refers to the current iteration
});

B.) 実際に「未定義」を使用していない場合は、何からも保護していません。

C.) 私は正規表現を気にするつもりはありません笑 編集: おそらくそれは望んでいます[A-Z0-9\-]

D.) 文字列と数値を連結しています。'string' + Date.getTime().toString()代わりに試す

JSLint Type Confusion: function and object with jQuery .css()も参照してください型の混乱については、私が同意しない奇妙な点がいくつかあります

E.) 繰り返しますが、正規表現を試すつもりはありません EDIT: ただし、同じ質問があります: JSLint "insecure ^" in regular expression

F.) ループの外側で一度関数を作成し、それをループの内側で使用できる場合 (適切に行う限り)、パフォーマンスが大幅に向上します。

于 2011-07-22T22:53:00.053 に答える
1

他の人が答えているのを見たので、少なくとも c) を試してみます。

c. JS Lint: エスケープされていない「-」。

if (value.match(/^[A-Z0-9._%+-]+@(?:[A-Z0-9-]+\.)+[A-Z]{2,4}$/i)) {
   return true;
}

C. - の前にバックスラッシュを追加し9-+-

申し訳ありませんが、E) についてはお手伝いできません。その正規表現は私には問題ないようです。

于 2011-07-22T22:55:44.047 に答える