no-magic-numbers
禁止幻数(no-magic-numbers)
“魔术数字”是代码中多次出现的数字,没有明确的含义。它们应该最好由命名常量替换。
var now = Date.now(),
inOneHour = now + (60 * 60 * 1000
规则细节
no-magic-numbers
规则旨在通过确保将特殊数字声明为常量以使其含义明确,从而使代码更易读并且重构更容易。
此规则的错误
代码示例:
/*eslint no-magic-numbers: "error"*/
var dutyFreePrice = 100,
finalPrice = dutyFreePrice + (dutyFreePrice * 0.25
/*eslint no-magic-numbers: "error"*/
var data = ['foo', 'bar', 'baz'];
var dataLast = data[2];
/*eslint no-magic-numbers: "error"*/
var SECONDS;
SECONDS = 60;
此规则的正确
代码示例:
/*eslint no-magic-numbers: "error"*/
var TAX = 0.25;
var dutyFreePrice = 100,
finalPrice = dutyFreePrice + (dutyFreePrice * TAX
选项
ignore
一组要忽略的数字。它默认设置为[]
。如果提供,它必须是一个Array
。
示例选项的正确
代码示例{ "ignore": [1] }
:
/*eslint no-magic-numbers: ["error", { "ignore": [1] }]*/
var data = ['foo', 'bar', 'baz'];
var dataLast = data.length && data[data.length - 1];
ignoreArrayIndexes
用于指定用作数组索引的数字是否可以使用的布尔值。false
默认。
选项的正确
代码示例{ "ignoreArrayIndexes": true }
:
/*eslint no-magic-numbers: ["error", { "ignoreArrayIndexes": true }]*/
var data = ['foo', 'bar', 'baz'];
var dataLast = data[2];
enforceConst
一个布尔值,用于指定是否应在数字变量声明中检查 const 关键字。false
默认。
选项的错误
代码示例{ "enforceConst": true }
:
/*eslint no-magic-numbers: ["error", { "enforceConst": true }]*/
var TAX = 0.25;
var dutyFreePrice = 100,
finalPrice = dutyFreePrice + (dutyFreePrice * TAX
detectObjects
一个布尔值,用于指定设置对象属性时是否应检测数字。false
默认。
选项的错误
代码示例{ "detectObjects": true }
:
/*eslint no-magic-numbers: ["error", { "detectObjects": true }]*/
var magic = {
tax: 0.25
};
var dutyFreePrice = 100,
finalPrice = dutyFreePrice + (dutyFreePrice * magic.tax
选项的正确
代码示例{ "detectObjects": true }
:
/*eslint no-magic-numbers: ["error", { "detectObjects": true }]*/
var TAX = 0.25;
var magic = {
tax: TAX
};
var dutyFreePrice = 100,
finalPrice = dutyFreePrice + (dutyFreePrice * magic.tax
版本
该规则在 ESLint 1.7.0 中引入。