版本

prefer-numeric-literals

不允許使用 parseInt()Number.parseInt(),而應使用二進位、八進位和十六進位字面值

🔧 可修正

此規則報告的某些問題可以透過 --fix 命令列 選項自動修正

❄️ 凍結

此規則目前為 凍結 狀態,不接受功能請求。

parseInt()Number.parseInt() 函式可用於將二進位、八進位和十六進位字串轉換為整數。由於 ES6 支援二進位、八進位和十六進位字面值,因此本規則鼓勵使用這些數字字面值,而不是 parseInt()Number.parseInt()

0b111110111 === 503;
0o767 === 503;

規則詳情

如果呼叫 parseInt()Number.parseInt() 時使用兩個參數:一個字串;以及基數選項 2(二進位)、8(八進位)或 16(十六進位),則此規則會禁止這些呼叫。

此規則的 錯誤 程式碼範例

在 Playground 中開啟
/*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;

此規則的 正確 程式碼範例

在 Playground 中開啟
/*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 中引入。

資源

變更語言