現在、JSLint に対して JavaScript を検証しており、進捗状況も良好です。特に Jquery ライブラリの操作において、より優れた JavaScript を記述するのに役立っています。
私はJSLintのフォークであるJSHintに出会いました。そこで、JavaScript を多用する Web アプリケーションの場合、どの検証ツールが最も適しているか疑問に思っています。
- JSLint か JSHint か?
今、検証メカニズムを決定し、今後はこれをクライアント側の検証に使用したいと思います。
jshint と jslint の違いは何ですか? 単一の JavaScript の例で説明してください。
リンク:
jshint -http://www.jshint.com/
jslint -http://jslint.com/
ベストアンサー1
要約
自分自身またはチームのために非常に高い標準を求めている場合は、JSLint を使用してください。ただし、これは必ずしも標準ではなく、 Doug Crockford が独断的に提供した標準にすぎないことに注意してください。
もう少し柔軟性を高めたい場合や、チーム内に JSLint の意見を受け入れないベテランの人がいる場合、または JavaScript と他の C ファミリ言語を定期的に行き来している場合は、JSHint をお試しください。
完全版
フォークの背後にある理由を説明した 2 つの記事では、JSHint が存在する理由が説明されています。
JSLint の背後にある考え方は、Crockford 主導ではなくコミュニティ主導であるということです。JSHint は、JSLint が厳格に守るいくつかのスタイルや細かい構文上の意見に対して、一般的にはより寛容です (少なくとも設定可能または非依存です)。
たとえば、以下の1.と2.の両方が適切だと思われる場合、または2.では利用できない1.の側面を 1 つ以上備えたコードを記述したい場合は、JSHint が適しています。2.が唯一の正しい選択肢だと思われる場合は、JSLint を使用してください。 他にも違いはあると思いますが、ここではいくつか取り上げます。
JSHint はそのままで合格 - JSLint は不合格
(function() { "use strict"; var x=0, y=2; function add(val1, val2){ return val1 + val2; } var z; for (var i=0; i<2; i++){ z = add(y, x+i); } })();
JSHintとJSLintの両方を通過
(function () { "use strict"; var x = 0, y = 2, i, z; function add(val1, val2) { return val1 + val2; } for (i = 0; i < 2; i += 1) { z = add(y, x + i); } }());
JSLintのコードは視覚的に魅力的だと思います。私が同意できないのは、var
関数内での複数の宣言とfor
ループvar i = 0
宣言を嫌う、および関数宣言の空白の強制の一部。
JSLint が強制する空白文字に関するいくつかのことは、必ずしも悪いというわけではありませんが、同ファミリーの他の言語 (C、Java、Python など) の標準的な空白文字規則とは一致していません。これらの規則は、Javascript でもよく採用されています。私は 1 日中、これらのさまざまな言語でコードを書いており、コード内の Lint スタイルの空白文字を好まないチーム メンバーと作業しているので、JSHint はバランスが取れていると思います。JSHint は、正当なバグや非常に不適切な形式のコードを見つけますが、JSLint のように、気に入らないスタイル上の意見や構文上の細かい点について私を叱責することはありません (無効にできない方法で時々)。
優れたライブラリの多くは Lint 可能ではありません。これは、JSLint の一部が「優れたコード」(確かに優れたコードです) の 1 つのバージョンをプッシュすることだけを目的としているという考え方に、ある程度の真実があることを示しています。しかし、同じライブラリ (または他の優れたライブラリ) も、おそらく Hint 可能ではないので、その通りです。