60

JSLintを使用してJavaScriptを検証してから約2年になりますが、ルールが変更されることがあります。一般に、JSLintが新しいルールを導入する場合、解析時にこのルールを無視するチェックボックスがあります。無視しないことを選択した場合は、コードをルールに準拠させることができます。

しかし、今日JSLint検証を実行していたときに、次の2つの新しいエラーが発生しました。

タブではなく、スペースを使用してください。

これは「タブとスペースの混合」エラーではありません。タブのみを使用しています。これは「タブとスペースの混合」の最近変更されたバージョンであり、現在は一般的にタブを許可していません。

と:

安全でないキャラクター。

* /

安全でないキャラクター。

_const:{

無視する新しいオプションはありません。ブロックコメントを閉じることについて何が安全でないのか、なぜ_const:{が安全でないと見なされるのかnomen: true、(識別子に_がぶら下がっている)、またはインデントに関する構成がまだあるのに、なぜ突然スペースからタブに切り替える必要があるのか​​理解できませんタブである4つのスペースの。

少なくともJSLintにこれらの新しいルールを無視させる方法が紹介された理由を誰かが知っていますか?

更新: このMessy White Spaceオプションは問題を回避しますが、他の予期しない動作を引き起こす可能性があります。

if (condition) { 
  //            ^-- there is a space but it won't indicate an error
4

4 に答える 4

77

ダグラス・クロックフォードが、はるかに多くの人々をJSHintに切り替えさせたようです。このコミットを見てください。

「スペースとタブが混在しています」エラーが削除され、代わりに新しい「タブではなくスペースを使用する」エラーが追加されました。それとは別に、このdiffには、この原因を示す小さな変更が1つあります。次の行(コメントが追加されました):

at = source_row.search(/ \t/);
//                      ^ Space

これに置き換えられました:

at = source_row.search(/\t/);
//                      ^ No space!

その検索に続いて、ifステートメントがあります。条件がと評価されるtrueと、「タブではなくスペースを使用してください」という警告が発行されます。そのステートメントは次のとおりです。

if (at >= 0) {
    warn_at('use_spaces', line, at + 1);
}

これがCrockfordによるほんの少しの見落としであることを願っています。ご覧のとおり、どこかでタブ文字を使用すると、JSLintはこの警告を発します。残念ながら、彼のコミットメッセージは完全に役に立たず、ドキュメントは更新されていないようです。そのため、この変更の背後にある理由について推測する以外に何もできません。

JSLintを放棄して、今すぐJSHintに切り替えることをお勧めします

于 2012-12-17T13:12:42.520 に答える
13

「乱雑な空白」オプションをクリックすると、エラーを抑えることができます。

于 2012-12-31T16:05:42.600 に答える
10

JSLintがタブに関するエラーを出す理由に答えるために、 http: //www.jslint.com/help.htmlは次の理由を示しています。

タブとスペースを混在させないでください。両方を持つことから生じる問題を回避するために、1つだけを選択する必要があります。個人的な好みは非常に信頼できない基準です。どちらも他よりも強力な利点を提供しません。50年前、タブにはメモリの消費量が少ないという利点がありましたが、ムーアの法則によりその利点はなくなりました。スペースには、タブに比べて明らかな利点が1つあります。タブが表すスペースの数について信頼できる基準はありませんが、スペースがスペースを占めることは広く受け入れられています。したがって、スペースを使用してください。必要に応じてタブで編集できますが、コミットする前にもう一度スペースであることを確認してください。いつか私たちはついにタブの普遍的な標準を手に入れるかもしれませんが、その日が来るまで、より良い選択はスペースです。

基本的に、彼は、タブとスペースのどちらを使用してそれらが混在しないようにするかについて、全員が合意に達することを望んでいます。彼は、スペースの幅の一貫性がそれを優れた選択肢にすることを決定したので、私たちは皆それを使うべきです。明らかに、この考え方(私自身も含む)に同意しない人もいますが、それがJSLintがそのエラーをスローする理由です。

于 2015-11-04T19:08:27.617 に答える
6

エディタ/IDEに応じて、TABの動作を調整できます。

たとえば、私はSublimeTextを使用しています。右下隅の近くにタブサイズ:4があります。

それをクリックして、「スペースを使用してインデント」に設定しました。

これにより、すべてのタブがスペースを使用するように更新され、JSLintエラーが消えました。コードを適切に構造化するために、JSLintでは可能な限り少ないオプションを使用するようにしています。

また、エディターの設定に基づいてタブが表示されるJSFormatも使用しているため、完了したら、JSFormatを実行してから、JSLintを実行します。エラーなし=ハッピーボーイ!

それが役に立てば幸い。

于 2013-09-20T17:46:49.600 に答える