prefer-numeric-literals
禁止使用 parseInt()
和 Number.parseInt()
,改用二進位、八進位和十六進位字面值
🔧 可修正
此規則回報的某些問題可由 --fix
命令列選項自動修正
parseInt()
和 Number.parseInt()
函式可用於將二進位、八進位和十六進位字串轉換為整數。由於 ES6 中支援二進位、八進位和十六進位字面值,因此此規則鼓勵使用這些數字字面值,而不是 parseInt()
或 Number.parseInt()
。
0b111110111 === 503;
0o767 === 503;
規則詳情
如果使用兩個參數呼叫 parseInt()
或 Number.parseInt()
:一個字串;以及基數選項 2(二進位)、8(八進位)或 16(十六進位),則此規則會禁止呼叫。
此規則的不正確程式碼範例
在遊樂場中開啟
/*eslint prefer-numeric-literals: "error"*/
=== 503;
=== 503;
=== 503;
=== 503;
=== 503;
=== 503;
=== 503;
此規則的正確程式碼範例
在遊樂場中開啟
/*eslint prefer-numeric-literals: "error"*/
parseInt(1);
parseInt(1, 3);
Number.parseInt(1);
Number.parseInt(1, 3);
0b111110111 === 503;
0o767 === 503;
0x1F7 === 503;
a[parseInt](1,2);
parseInt(foo);
parseInt(foo, 2);
Number.parseInt(foo);
Number.parseInt(foo, 2);
何時不使用
如果您想允許使用 parseInt()
或 Number.parseInt()
來表示二進位、八進位或十六進位整數,或者如果您未使用 ES6(因為 ES5 及更低版本不支援二進位和八進位字面值),您可能會希望停用此規則。
相容性
- JSCS: requireNumericLiterals
版本
此規則是在 ESLint v3.5.0 中引入的。