在线文档教程
Eslint
规则 | Rules

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

资源