4

最近、js ファイルのタイプミスが私のプロジェクトの 1 つで問題を引き起こしましたが、特定のブラウザーでのみ発生しました。jsLint を使用してほとんどの js ファイルを実行し、検出されていない他の問題を探しています。目標は、問題を修正するか、問題が解決しない場合は適切な jsLint オプションをオンにして、すべての js ファイルが jsLint を通過するようにすることです。

それができれば、将来的には jsLint をより頻繁に実行する方法を見つけたいと思っていますが、最初にすべてのファイルを渡す必要があります。

私は1つの問題で多くの問題を抱えています。「X は定義される前に使用されました」という警告/エラーが表示され続けます。アイテムが定義される前にアイテムを使用しても問題ないので、この警告をオフにしたかったのです。上部のコメントで undef: true を設定し、Web インターフェイスを介してチェックボックスを設定しようとしましたが、今日の時点ではまだこのエラーが発生しています。

このオプションは壊れていますか、それとも私が何か間違ったことをしているのですか、またはこのオプションの機能を誤解していますか?

docsによると、これは関数で機能するはずです。

現在、jsLint Web ツールを使用して以下のコードをスキャンしています。

/*jslint undef: true, white: true, browser: true */
/*global jQuery */

(function($){
    "use strict";

    $(function() {
        createDashboard();
        loadDashboardDataFromControls();
    });

    function loadDashboardDataFromControls()
    {
    }

    function createDashboard()
    {
    }
}(jQuery));
4

2 に答える 2

2

JSLint のソース コード(この記事の執筆時点での最新のコミット) によると、厳密なモードundefでは次のようになります。false

function use_strict() {
    if (next_token.string === 'use strict') {
        if (strict_mode) {
            warn('unnecessary_use');
        }
        edge();
        advance();
        semicolon();
        strict_mode = true;
        option.undef = false;
        return true;
    }
    return false;
}

お気づきだと思いますが、ソース コードを再配置することで、警告を簡単に回避できます。上loadDashboardDataFromControls()に移動するだけです。loadDashboardDataFromControls()$([...])

注: strict モードでは、使用する前に変数を定義する必要がありますが、コードは明らかにその規則に違反していません。したがって、私の意見では、少なくともドキュメントのバグが見られます。JSLint ドキュメントには、strict モードではundefフラグが に設定されていると記載されているはずfalseです。

于 2012-08-18T07:24:36.127 に答える
0

このメッセージを無効にするには、プロジェクトのルートに .jshintrc ファイルを作成し、次のコードを追加します。

{
   "latedef": false
}
于 2015-03-04T21:25:06.263 に答える