1

このCloudflareリンクから HTML5Shiv.min.js のバージョンをコピーしました。ファイルを Adob​​e Brackets にインポートすると、スクリプトに次のエラーが含まれていることが JSLint コンパイラによって通知されます。

4   Missing 'use strict' statement.
    !function (a, b) {function c(a, b) {var c = a.createElement("p"), d = a.getElementsByTagName("head")[0] || a.documentElement; return c.innerHTML="x<style>"+b+"</style>",d.ins

4   'c' is already defined.
    !function (a, b) {function c(a, b) {var c = a.createElement("p"), d = a.getElementsByTagName("head")[0] || a.documentElement; return c.innerHTML="x<style>"+b+"</style>",d.ins

4   Expected ';' and instead saw '='.
    !function (a, b) {function c(a, b) {var c = a.createElement("p"), d = a.getElementsByTagName("head")[0] || a.documentElement; return c.innerHTML="x<style>"+b+"</style>",d.ins

4   Unreachable '=' after 'return'.
    !function (a, b) {function c(a, b) {var c = a.createElement("p"), d = a.getElementsByTagName("head")[0] || a.documentElement; return c.innerHTML="x<style>"+b+"</style>",d.ins

4   Expected an identifier and instead saw '='.
    !function (a, b) {function c(a, b) {var c = a.createElement("p"), d = a.getElementsByTagName("head")[0] || a.documentElement; return c.innerHTML="x<style>"+b+"</style>",d.ins

4   Stopping. (100% scanned).
    !function (a, b) {function c(a, b) {var c = a.createElement("p"), d = a.getElementsByTagName("head")[0] || a.documentElement; return c.innerHTML="x<style>"+b+"</style>",d.ins

これを使うことにした場合、これは本当にうまくいくでしょうか?ステートメントが欠落しており、演算子に到達できないコード。JSLintが最新ではないか、何かがおかしいのかもしれませんが、可能であれば、これについてセカンドオピニオンを得たいと思います。

ありがとうございました。

4

1 に答える 1

4

汗だくにしないでください。図書館を利用して大丈夫です。唯一の「欠けている」行は です"use strict";。これは JSLint が好むものですが、使用する必要はありません。(ここに のまともな議論がありuse strictます。)

JSLint と他のリンターは、 Functionalstyleの 2 種類の「エラー」を探します。JSLint が検出するスタイル エラーの多くは、実際には回避したい論理エラーに変換されます。それは素晴らしいツールです。

同時に、特に縮小されたコードでは、コードの機能を壊すことなく、JSLint が好まないスタイル エラーを作成できます。JSLint がサードパーティのコードや誰かの縮小コードのスタイル エラーを識別しているのを見て心配する必要はありません。それらは必ずしも機能的な問題ではありません。

原則として、サードパーティのライブラリはリンティングから除外する必要があります。自分でフォークして lint しない限り、外部ライブラリに対してできることは何もありません。これは正気ではありません。;^) また、縮小されたコードは、多くの場合、lint に適していないショートカットを使用します。品質を高く保つために縮小する前にコードをリントしますが、とにかく触れてはならない QAing ライブラリについて心配する必要はありません。高品質を確保するための別の方法があると仮定します。これには、別のリンターや、別のルール セットを持つリンターの使用が含まれる場合があります。

そして、ここに「汚い」秘密があります...

jQueryはJSLintも失敗します...

たとえば、jQueryは、縮小されていなくても、リントしません。JSLintに空白の「エラー」、「厳密な使用」の欠落を解除するように指示する行を追加し、ブラウザーを想定する必要があることを知らせても、...

'module' was used before it was defined.
    if ( typeof module === "object" && typeof module.exports === "object" ) {
line 18 character 44'module' was used before it was defined.
    if ( typeof module === "object" && typeof module.exports === "object" ) {
line 26 character 3'module' was used before it was defined.
        module.exports = global.document ?
line 39 character 3Unexpected 'typeof'. Use '===' to compare directly with undefined.
}(typeof window !== "undefined" ? window : this, function( window, noGlobal ) {
line 49 character 5 Combine this with the previous 'var' statement.
    var slice = deletedIds.slice;
line 51 character 5 Combine this with the previous 'var' statement.
    var concat = deletedIds.concat;
line 53 character 5 Combine this with the previous 'var' statement.
    var push = deletedIds.push;
line 55 character 5 Combine this with the previous 'var' statement.

などなどなど。そして、jQuery が偽物だと主張する人は誰もいないでしょう。そのため、Cloudfire やその他のファイルで同じエラー セットが表示されても心配する必要はありません。

結論: ライブラリ、特に縮小されたライブラリについて怒鳴られても気にしないでください。リンターは、コードのコード品質ツールです。他の人がコードの動作を維持する他の手段を持っていて、それがあなたの用途に適している場合は、lib をそのままにしておきます。;^)

于 2015-03-21T01:39:38.403 に答える