版本

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

资源

更改语言