版本

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"*/

parseInt("111110111", 2) === 503;
parseInt(`111110111`, 2) === 503;
parseInt("767", 8) === 503;
parseInt("1F7", 16) === 503;
Number.parseInt("111110111", 2) === 503;
Number.parseInt("767", 8) === 503;
Number.parseInt("1F7", 16) === 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 及更低版本不支援二進位和八進位字面值),您可能會希望停用此規則。

相容性

版本

此規則是在 ESLint v3.5.0 中引入的。

資源

變更語言