私はこの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は次のように仮定します。
( 参照 )
私は正しく質問に答えていませんが、 なぜ基数 を指定すべきなのかを明確にすることは理にかなっていると思います。
MDNのドキュメントで私たちはそれを読むことができます:
基数が未定義または0(または存在しない)の場合、JavaScriptは次のことを想定します。
出典: MDN parseInt()
この警告を回避するには、次のようにします。
parseInt("999", 10);
あなたはそれを置き換えることができます:
Number("999");
ParseIntとNumberは 動作が異なる であることに注意してください。ただし、場合によっては、一方を他方に置き換えることができます。
このテストをスキップしたい場合は、この規則を無効にすることができます。
インサート:
radix: false
tslint.json
ファイルの "rules
"プロパティの下。
あなたがこの例外を理解しないならば、そうすることはお勧めできません。
JSファイルの上に以下を追加すると、JSHintに基数警告を抑制するように指示します。
/*jshint -W065 */
また見なさい: http://jshint.com/docs/#options
ParseInt行の真上にこの行を追加することもできます。
// eslint-disable-next-line
これは次の行のeslintチェックを無効にします。 1行か2行だけスキップする必要がある場合はこれを使用してください。
+ fooを使って文字列を変換するだけで解決しました。
読みやすくするためにはあまり意味がありません(汚れた修正)。
console.log( +'1' )
// 1 (int)
ParseInt()は2つの引数を取るので、基数の場所に空の文字列を入れるだけです。
parseInt(文字列、基数);
string解析する値文字列引数が文字列でない場合は、(ToString抽象操作を使用して)文字列に変換されます。文字列引数の先頭の空白は無視されます。
radix上記の文字列の基数(数式システムの基数)を表す2から36の整数。人間が一般的に使用する10進数で10を指定してください。読者の混乱を避け、予測可能な動作を保証するために、常にこのパラメーターを指定してください。基数が指定されていない場合、実装が異なると結果も異なります。通常、デフォルト値は10です。
imageIndex = parseInt(id.substring(id.length - 1)) - 1;imageIndex = parseInt(id.substring(id.length - 1), '')-1;
substring
関数を呼び出す代わりに、.slice()
を使うことができます。
imageIndex = parseInt(id.slice(-1)) - 1;
ここで、sliceの-1は、最後のインデックスからスライスを開始することを示します。
ありがとう。
"radix": "off"
のように見えるカスタムルールを.eslintrcに追加するだけで、このeslintの不要な警告がなくなります。これはエスリントリンター用です。