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 中引入。
资源
本文档系腾讯云开发者社区成员共同维护,如有问题请联系 cloudcommunity@tencent.com

