私はこのJavaScriptコードでJSLintを実行し、それは言った:
32行目30文字目の問題:基数パラメーターがありません。
これは問題のコードです:
imageIndex = parseInt(id.substring(id.length - 1))-1;
ここで何が問題になっていますか?
私はこのJavaScriptコードでJSLintを実行し、それは言った:
32行目30文字目の問題:基数パラメーターがありません。
これは問題のコードです:
imageIndex = parseInt(id.substring(id.length - 1))-1;
ここで何が問題になっていますか?
回答:
parseIntで基数を渡すことは常に良い習慣です-
parseInt(string, radix)
10進数の場合-
parseInt(id.substring(id.length - 1), 10)
radixパラメータが省略されている場合、JavaScriptは以下を想定します。
(参考)
Redundant radix parameter
radix
引数は数値であり、数値の文字列表現ではないため、指定する基数はありません。
この警告を回避するには、以下を使用する代わりに:
parseInt("999", 10);
次のように置き換えることができます:
Number("999");
Number()
よりも6倍高速parseInt()
私は質問に適切に答えていませんが、基数を指定する必要がある理由を明確にすることは理にかなっていると思います。
MDNのドキュメントでは、次のように読むことができます。
基数が未定義または0(または存在しない)の場合、JavaScriptは以下を想定します。
ソース:MDN parseInt()
"-W065": true
たとえば、.jshintrc
ファイルで使用できます。
+ fooを使用して文字列を変換することで解決しました。
読みやすさを考慮したものではありません(ダーティフィックス)。
console.log( +'1' )
// 1 (int)
parseInt()は2つの引数を取るため、空の文字列を基数の場所に置くだけです。
parseInt(文字列、基数);
string解析する値。文字列引数が文字列でない場合は、文字列に変換されます(ToString抽象演算を使用)。文字列引数の先頭の空白は無視されます。
基数上記の文字列の基数(数値システムにおける基数)を表す2〜36の整数。人間が一般的に使用する10進数のシステムには10を指定します。読者の混乱を避け、予測可能な動作を保証するために、常にこのパラメーターを指定してください。基数が指定されていない場合、実装が異なると結果も異なります。通常、デフォルト値は10です。
imageIndex = parseInt(id.substring(id.length-1))-1;
imageIndex = parseInt(id.substring(id.length - 1), '')-1;
そのような.eslintrcにカスタムルールを追加するだけで
"radix": "off"
、このeslint unnesesery警告がなくなります。これはeslintリンター用です。