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 中引入的。