このようなものがある場合:
var blah = function() { };
そして、後でコードのブラーが使用されていますが、空のブロックを削除するというJSLintヒントは何ですか?
jsLint
が何を考えているのかわかりませんが、これが問題であり、解決策が必要な場合は、次のようなことができます。
var blah = function() { return undefined; }; // or just return;
更新:Bergi
の推測は正しいと思います。なぜなら、 jslint サイトのRequired Blocks
セクション :
JSLintは、if、while、doおよびforステートメントがブロック{ブレースで囲まれたステートメント}で作成されることを想定しています。JavaScriptでは、ifを次のように記述できます。if(条件)ステートメント;多くのプログラマが同じコードで作業しているプロジェクトの間違い。それが、JSLintがブロックの使用を期待する理由です。
if (condition) { statements; }
経験によれば、このフォームはより回復力があります。
したがって、おそらく空のブロックを確認するだけです{ }
および空白関数を無効にします。
どのJsLintオプションがこの警告をオフにするかを尋ねている場合は、「debug:true」です。
奇妙なことに、ドキュメントはこの動作を参照していません。
「デバッガーステートメントの許可」| debug| trueifdebuggerステートメントを許可する必要があります。実動に入る前に、このオプションをfalseに設定します。
ただし、 コード を見ると、デバッグオプションをtrueに設定しても警告が表示されないことがわかります。
function block(kind) {
// A block is a sequence of statements wrapped in braces.
...
if (kind !== 'catch' && array.length === 0 && !option.debug) {
curly.warn('empty_block');
}
...
}
多くのコードチェッカーがこの種のことをチェックします。 neverに空のコードブロックを含める必要があるという意味ではありません。時々それらを持っている正当な理由があります。しかし、それは多くの場合は、プログラマが実装を書くのを忘れたことを意味します。 :)
私がやりたいのは、関数本体にコメントを入れて、それが空である理由を説明することです。これは警告を抑制するはずですが、コードチェッカーがコメント「空」のコードブロックを考慮するかどうかに依存しない場合があります。
var blah = function() { /* empty because ... */ };
new
演算子でコンストラクターとして関数を使用する場合:
// Returns the instance that was just created with the new operator.
var ClassLikeFunction = function(){
return this;
};
一方、ifが意図的に戻り値のない空の関数である場合:
// Returns the same value as a function that returned nothing.
var blankFunction = function(){
return undefined;
};
ラムダ式を使用します。
const blah = () => void 0;
これにより、blah
がundefined
を返す空の関数であることが明確になります。
この
{
...
}
はコードブロックと見なされ、ヒントは空であることを知らせます(コマンドはありません)。ただし、@ Katana314が言ったように、意図的に削除することはできません。
この質問をさせてくれたのは、名前空間に空の関数があったことです
そして、その関数を呼び出したとき、そして
TypeError: MyNamespcae.myFunction is not a function
したがって、空の関数を作成しないでください。少なくとも、void(0)のようなステートメントを1つ追加してください。またはnullを返します。