prefer-numeric-literals
不允許使用 parseInt()
和 Number.parseInt()
,而應使用二進位、八進位和十六進位字面值
parseInt()
和 Number.parseInt()
函式可用於將二進位、八進位和十六進位字串轉換為整數。由於 ES6 支援二進位、八進位和十六進位字面值,因此本規則鼓勵使用這些數字字面值,而不是 parseInt()
或 Number.parseInt()
。
0b111110111 === 503;
0o767 === 503;
規則詳情
如果呼叫 parseInt()
或 Number.parseInt()
時使用兩個參數:一個字串;以及基數選項 2(二進位)、8(八進位)或 16(十六進位),則此規則會禁止這些呼叫。
此規則的 錯誤 程式碼範例
在 Playground 中開啟
/*eslint prefer-numeric-literals: "error"*/
=== 503;
=== 503;
=== 503;
=== 503;
=== 503;
=== 503;
=== 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 及更低版本不支援二進位和八進位字面值),您可能希望停用此規則。
相容性
- JSCS: requireNumericLiterals
版本
此規則在 ESLint v3.5.0 中引入。