prefer-numeric-literals

不允许 parseInt()Number.parseInt() 支持二进制、八进制和十六进制字面

🔧 Fixable

此规则报告的一些问题可通过 --fix 命令行选项自动修复

parseInt()Number.parseInt() 函数可用于将二进制、八进制和十六进制字符串转换为整数。由于 ES6 支持二进制、八进制和十六进制字面,因此该规则鼓励使用这些数字字面而不是 parseInt()Number.parseInt()

¥The parseInt() and Number.parseInt() functions can be used to turn binary, octal, and hexadecimal strings into integers. As binary, octal, and hexadecimal literals are supported in ES6, this rule encourages use of those numeric literals instead of parseInt() or Number.parseInt().

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

规则详情

¥Rule Details

如果使用两个参数调用,则此规则不允许调用 parseInt()Number.parseInt():一个字符串;以及 2(二进制)、8(八进制)或 16(十六进制)的基数选项。

¥This rule disallows calls to parseInt() or Number.parseInt() if called with two arguments: a string; and a radix option of 2 (binary), 8 (octal), or 16 (hexadecimal).

此规则的错误代码示例:

¥Examples of incorrect code for this rule:

在线运行
/*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;

此规则的正确代码示例:

¥Examples of correct code for this rule:

在线运行
/*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);

何时不使用

¥When Not To Use It

如果你想允许对二进制、八进制或十六进制整数使用 parseInt()Number.parseInt(),或者如果你不使用 ES6(因为 ES5 及以下版本不支持二进制和八进制字面),你可能希望禁用此规则。

¥If you want to allow use of parseInt() or Number.parseInt() for binary, octal, or hexadecimal integers, or if you are not using ES6 (because binary and octal literals are not supported in ES5 and below), you may wish to disable this rule.

兼容性

¥Compatibility

版本

此规则是在 ESLint v3.5.0 中引入。

资源

ESLint 中文网
粤ICP备13048890号