# 规则
# 可能的问题
规则 | 描述 |
---|---|
array-callback-return | 在数组方法的回调中强制执行 return 语句 |
constructor-super | 在构造函数中需要 super() 调用 |
for-direction | 强制 "for" 循环更新子句将计数器移动到正确的方向。 |
getter-return | 在 getter 中强制执行 return 语句 |
no-async-promise-executor | 禁止使用异步函数作为 Promise 执行器 |
no-await-in-loop | 禁止循环内的 await |
no-class-assign | 不允许重新分配类成员 |
no-compare-neg-zero | 不允许与 -0 进行比较 |
no-cond-assign | 禁止条件表达式中的赋值运算符 |
no-const-assign | 不允许重新分配 const 变量 |
no-constant-binary-expression | 禁止操作不影响值的表达式 |
no-constant-condition | 禁止条件中的常量表达式 |
no-constructor-return | 禁止从构造函数返回值 |
no-control-regex | 禁止在正则表达式中使用控制字符 |
no-debugger | 禁止使用 debugger |
no-dupe-args | 不允许 function 定义中的重复参数 |
no-dupe-class-members | 禁止重复的类成员 |
no-dupe-else-if | 禁止 if-else-if 链中的重复条件 |
no-dupe-keys | 禁止对象字面量中的重复键 |
no-duplicate-case | 不允许重复的案例标签 |
no-duplicate-imports | 禁止重复的模块导入 |
no-empty-character-class | 禁止在正则表达式中使用空字符类 |
no-empty-pattern | 禁止空的解构模式 |
no-ex-assign | 不允许在 catch 子句中重新分配异常 |
no-fallthrough | 不允许 case 语句的失败 |
no-func-assign | 不允许重新分配 function 声明 |
no-import-assign | 不允许分配给导入的绑定 |
no-inner-declarations | 禁止嵌套块中的变量或 function 声明 |
no-invalid-regexp | 禁止在 RegExp 构造函数中使用无效的正则表达式字符串 |
no-irregular-whitespace | 禁止不规则空格 |
no-loss-of-precision | 禁止失去精度的字面数字 |
no-misleading-character-class | 禁止在字符类语法中由多个代码点组成的字符 |
no-new-symbol | 禁止带有 Symbol 对象的 new 运算符 |
no-obj-calls | 禁止将全局对象属性作为函数调用 |
no-promise-executor-return | 禁止从 Promise 执行器函数返回值 |
no-prototype-builtins | 禁止直接在对象上调用某些 Object.prototype 方法 |
no-self-assign | 禁止两边完全相同的赋值 |
no-self-compare | 禁止双方完全相同的比较 |
no-setter-return | 禁止从设置器返回值 |
no-sparse-arrays | 禁止稀疏数组 |
no-template-curly-in-string | 禁止在常规字符串中使用模板字面占位符语法 |
no-this-before-super | 在构造函数中调用 super() 之前禁止 this /super |
no-undef | 除非在 /*global */ 注释中提及,否则不允许使用未声明的变量 |
no-unexpected-multiline | 禁止混淆多行表达式 |
no-unmodified-loop-condition | 禁止未修改的循环条件 |
no-unreachable | 在 return 、throw 、continue 和 break 语句之后禁止无法访问的代码 |
no-unreachable-loop | 禁止带有仅允许一次迭代的主体的循环 |
no-unsafe-finally | 禁止 finally 块中的控制流语句 |
no-unsafe-negation | 禁止对关系运算符的左操作数求反 |
no-unsafe-optional-chaining | 不允许在不允许 undefined 值的上下文中使用可选链接 |
no-unused-private-class-members | 禁止未使用的私有类成员 |
no-unused-vars | 禁止未使用的变量 |
no-use-before-define | 在定义之前禁止使用变量 |
no-useless-backreference | 禁止正则表达式中无用的反向引用 |
require-atomic-updates | 禁止由于使用 await 或 yield 而可能导致竞争条件的分配 |
use-isnan | 检查 NaN 时需要调用 isNaN() |
valid-typeof | 强制将 typeof 表达式与有效字符串进行比较 |
# 建议
规则 | 描述 |
---|---|
accessor-pairs | 在对象和类中强制执行 getter 和 setter |
arrow-body-style | 箭头函数体周围需要大括号 |
block-scoped-var | 在定义的范围内强制使用变量 |
camelcase | 强制执行驼峰命名约定 |
capitalized-comments | 强制或禁止评论首字母大写 |
class-methods-use-this | 强制类方法使用 this |
complexity | 强制执行程序中允许的最大圈复杂度 |
consistent-return | 要求 return 语句始终或从不指定值 |
consistent-this | 捕获当前执行上下文时强制命名一致 |
curly | 对所有控制语句强制使用一致的大括号样式 |
default-case | 在 switch 语句中需要 default 个案例 |
default-case-last | 强制 switch 语句中的默认子句放在最后 |
default-param-last | 强制将默认参数放在最后 |
dot-notation | 尽可能强制使用点表示法 |
eqeqeq | 需要使用 === 和 !== |
func-name-matching | 要求函数名称与分配给它们的变量或属性的名称相匹配 |
func-names | 要求或禁止命名的 function 表达式 |
func-style | 强制一致地使用 function 声明或表达式 |
grouped-accessor-pairs | 在对象字面量和类中需要分组访问器对 |
guard-for-in | 要求 for-in 循环包含 if 语句 |
id-denylist | 禁止指定标识符 |
id-length | 强制最小和最大标识符长度 |
id-match | 要求标识符匹配指定的正则表达式 |
init-declarations | 在变量声明中要求或不允许初始化 |
logical-assignment-operators | 要求或禁止逻辑赋值逻辑运算符简写 |
max-classes-per-file | 强制每个文件的最大类数 |
max-depth | 强制块可以嵌套的最大深度 |
max-lines | 强制每个文件的最大行数 |
max-lines-per-function | 在函数中强制执行最大数量的代码 |
max-nested-callbacks | 强制回调可以嵌套的最大深度 |
max-params | 在函数定义中强制使用最大数量的参数 |
max-statements | 强制执行功能块中允许的最大语句数 |
multiline-comment-style | 对多行注释强制使用特定样式 |
new-cap | 要求构造函数名称以大写字母开头 |
no-alert | 禁止使用 alert 、confirm 和 prompt |
no-array-constructor | 禁止 Array 构造函数 |
no-bitwise | 禁止按位运算符 |
no-caller | 禁止使用 arguments.caller 或 arguments.callee |
no-case-declarations | 禁止 case 子句中的词法声明 |
no-confusing-arrow | 禁止可能与比较混淆的箭头函数 |
no-console | 禁止使用 console |
no-continue | 禁止 continue 语句 |
no-delete-var | 不允许删除变量 |
no-div-regex | 在正则表达式的开头明确禁止除法运算符 |
no-else-return | 在 if 语句中的 return 语句之后禁止 else 块 |
no-empty | 禁止空块语句 |
no-empty-function | 禁止空函数 |
no-eq-null | 不允许没有类型检查运算符的 null 比较 |
no-eval | 禁止使用 eval() |
no-extend-native | 禁止扩展原生类型 |
no-extra-bind | 禁止对 .bind() 进行不必要的调用 |
no-extra-boolean-cast | 禁止不必要的布尔类型转换 |
no-extra-label | 禁止不必要的标签 |
no-extra-semi | 禁止不必要的分号 |
no-floating-decimal | 不允许数字字面中的前导或尾随小数点 |
no-global-assign | 不允许分配给原生对象或只读全局变量 |
no-implicit-coercion | 禁止速记类型转换 |
no-implicit-globals | 禁止在全局范围内声明 |
no-implied-eval | 禁止使用类似 eval() 的方法 |
no-inline-comments | 禁止代码后的内联注释 |
no-invalid-this | 禁止在 this 的值为 undefined 的上下文中使用 this |
no-iterator | 禁止使用 __iterator__ 属性 |
no-label-var | 禁止与变量共享名称的标签 |
no-labels | 禁止带标签的语句 |
no-lone-blocks | 禁止不必要的嵌套块 |
no-lonely-if | 禁止 if 语句作为 else 块中的唯一语句 |
no-loop-func | 禁止在循环语句中包含不安全引用的函数声明 |
no-magic-numbers | 禁止幻数 |
no-mixed-operators | 禁止混合二元运算符 |
no-multi-assign | 禁止使用链式赋值表达式 |
no-multi-str | 禁止多行字符串 |
no-negated-condition | 禁止否定条件 |
no-nested-ternary | 禁止嵌套三元表达式 |
no-new | 不允许在赋值或比较之外使用 new 运算符 |
no-new-func | 禁止带有 Function 对象的 new 运算符 |
no-new-object | 禁止 Object 构造函数 |
no-new-wrappers | 禁止带有 String 、Number 和 Boolean 对象的 new 运算符 |
no-nonoctal-decimal-escape | 禁止字符串字面中的 \8 和 \9 转义序列 |
no-octal | 禁止八进制字面 |
no-octal-escape | 禁止字符串字面中的八进制转义序列 |
no-param-reassign | 不允许重新分配 function 参数 |
no-plusplus | 禁止一元运算符 ++ 和 -- |
no-proto | 禁止使用 __proto__ 属性 |
no-redeclare | 禁止变量重新声明 |
no-regex-spaces | 禁止在正则表达式中使用多个空格 |
no-restricted-exports | 禁止在导出中指定名称 |
no-restricted-globals | 禁止指定的全局变量 |
no-restricted-imports | import 加载时禁止指定模块 |
no-restricted-properties | 禁止某些对象的某些属性 |
no-restricted-syntax | 禁止指定的语法 |
no-return-assign | 在 return 语句中不允许赋值运算符 |
no-return-await | 禁止不必要的 return await |
no-script-url | 禁止 javascript: 网址 |
no-sequences | 禁止逗号运算符 |
no-shadow | 禁止在外部作用域中声明的隐藏变量中的变量声明 |
no-shadow-restricted-names | 禁止标识符遮蔽受限名称 |
no-ternary | 禁止三元运算符 |
no-throw-literal | 不允许将字面作为异常抛出 |
no-undef-init | 不允许将变量初始化为 undefined |
no-undefined | 禁止使用 undefined 作为标识符 |
no-underscore-dangle | 禁止标识符中的悬空下划线 |
no-unneeded-ternary | 当存在更简单的替代方案时,不允许使用三元运算符 |
no-unused-expressions | 禁止未使用的表达式 |
no-unused-labels | 禁止未使用的标签 |
no-useless-call | 禁止对 .call() 和 .apply() 进行不必要的调用 |
no-useless-catch | 禁止不必要的 catch 子句 |
no-useless-computed-key | 禁止对象和类中不必要的计算属性键 |
no-useless-concat | 禁止不必要的字面或模板字面串联 |
no-useless-constructor | 禁止不必要的构造函数 |
no-useless-escape | 禁止不必要的转义字符 |
no-useless-rename | 不允许将导入、导出和解构的分配重命名为相同的名称 |
no-useless-return | 不允许多余的返回语句 |
no-var | 需要 let 或 const 而不是 var |
no-void | 禁止 void 运算符 |
no-warning-comments | 不允许在评论中使用指定的警告词 |
no-with | 禁止 with 语句 |
object-shorthand | 要求或禁止对象字面量的方法和属性简写语法 |
one-var | 强制变量在函数中一起或单独声明 |
one-var-declaration-per-line | 要求或禁止在变量声明周围换行 |
operator-assignment | 尽可能要求或禁止赋值运算符简写 |
prefer-arrow-callback | 需要使用箭头函数进行回调 |
prefer-const | 声明后从不重新分配的变量需要 const 声明 |
prefer-destructuring | 需要从数组和/或对象中解构 |
prefer-exponentiation-operator | 禁止使用 Math.pow 支持 ** 运算符 |
prefer-named-capture-group | 在正则表达式中强制使用命名的捕获组 |
prefer-numeric-literals | 禁止 parseInt() 和 Number.parseInt() 支持二进制、八进制和十六进制字面 |
prefer-object-has-own | 禁止使用 Object.prototype.hasOwnProperty.call() 而更喜欢使用 Object.hasOwn() |
prefer-object-spread | 禁止将 Object.assign 与对象字面作为第一个参数一起使用,而更喜欢使用对象扩展。 |
prefer-promise-reject-errors | 要求使用 Error 对象作为 Promise 拒绝原因 |
prefer-regex-literals | 禁止使用 RegExp 构造函数来支持正则表达式字面 |
prefer-rest-params | 需要rest参数而不是arguments |
prefer-spread | 需要扩展运算符而不是 .apply() |
prefer-template | 需要模板字面而不是字符串连接 |
quote-props | 需要在对象字面属性名称周围加上引号 |
radix | 使用 parseInt() 时强制使用 radix 参数 |
require-await | 禁止没有 await 表达式的异步函数 |
require-unicode-regexp | 在 RegExp 上强制使用 u 标志 |
require-yield | 要求生成器函数包含 yield |
sort-imports | 在模块中强制执行排序的导入声明 |
sort-keys | 要求对对象键进行排序 |
sort-vars | 要求对同一声明块中的变量进行排序 |
spaced-comment | 在注释中的 // 或 /* 之后强制保持一致的间距 |
strict | 要求或禁止严格模式指令 |
symbol-description | 需要符号说明 |
vars-on-top | 要求将 var 声明放在其包含范围的顶部 |
yoda | 要求或禁止 "Yoda" 条件 |
# 布局和格式
规则 | 描述 |
---|---|
array-bracket-newline | 在打开数组括号之后和关闭数组括号之前强制换行 |
array-bracket-spacing | 在数组括号内强制保持一致的间距 |
array-element-newline | 在每个数组元素后强制换行 |
arrow-parens | 箭头函数参数需要括号 |
arrow-spacing | 在箭头函数中的箭头前后强制保持一致的间距 |
block-spacing | 在打开块之后和关闭块之前禁止或强制块内的空格 |
brace-style | 对块执行一致的大括号样式 |
comma-dangle | 要求或不允许尾随逗号 |
comma-spacing | 在逗号前后强制保持一致的间距 |
comma-style | 强制使用一致的逗号样式 |
computed-property-spacing | 在计算的属性括号内强制执行一致的间距 |
dot-location | 在点之前和之后强制执行一致的换行符 |
eol-last | 在文件末尾要求或禁止换行 |
func-call-spacing | 要求或不允许函数标识符及其调用之间有间距 |
function-call-argument-newline | 在函数调用的参数之间强制换行 |
function-paren-newline | 在函数括号内强制执行一致的换行符 |
generator-star-spacing | 在生成器函数中强制围绕 * 运算符保持一致的间距 |
implicit-arrow-linebreak | 强制箭头函数体的位置 |
indent | 强制一致的缩进 |
jsx-quotes | 强制在 JSX 属性中一致地使用双引号或单引号 |
key-spacing | 在对象字面属性中强制键和值之间的间距一致 |
keyword-spacing | 在关键字前后强制保持一致的间距 |
line-comment-position | 强制行注释的位置 |
linebreak-style | 强制执行一致的换行样式 |
lines-around-comment | 评论周围需要空行 |
lines-between-class-members | 要求或禁止类成员之间有空行 |
max-len | 强制执行最大行长 |
max-statements-per-line | 强制执行每行允许的最大语句数 |
multiline-ternary | 在三元表达式的操作数之间强制换行 |
new-parens | 在调用不带参数的构造函数时强制或禁止使用括号 |
newline-per-chained-call | 在方法链中的每次调用后都需要换行符 |
no-extra-parens | 禁止不必要的括号 |
no-mixed-spaces-and-tabs | 不允许使用混合空格和制表符进行缩进 |
no-multi-spaces | 禁止多个空格 |
no-multiple-empty-lines | 禁止多个空行 |
no-tabs | 禁止所有选项卡 |
no-trailing-spaces | 不允许在行尾出现尾随空格 |
no-whitespace-before-property | 禁止属性前有空格 |
nonblock-statement-body-position | 强制执行单行语句的位置 |
object-curly-newline | 在打开大括号之后和关闭大括号之前强制执行一致的换行符 |
object-curly-spacing | 在大括号内强制保持一致的间距 |
object-property-newline | 强制将对象属性放置在单独的行上 |
operator-linebreak | 为操作员强制执行一致的换行样式 |
padded-blocks | 要求或禁止在块内填充 |
padding-line-between-statements | 要求或禁止语句之间的填充行 |
quotes | 强制一致地使用反引号、双引号或单引号 |
rest-spread-spacing | 在 rest 和 spread 运算符及其表达式之间强制执行间距 |
semi | 要求或禁止使用分号而不是 ASI |
semi-spacing | 在分号前后强制保持一致的间距 |
semi-style | 强制分号的位置 |
space-before-blocks | 在块之前强制保持一致的间距 |
space-before-function-paren | 在 function 定义左括号之前强制保持一致的间距 |
space-in-parens | 在括号内强制保持一致的间距 |
space-infix-ops | 中缀运算符周围需要间距 |
space-unary-ops | 在一元运算符之前或之后强制执行一致的间距 |
switch-colon-spacing | 在 switch 语句的冒号周围强制使用空格 |
template-curly-spacing | 要求或禁止模板字符串的嵌入表达式周围有空格 |
template-tag-spacing | 要求或禁止模板标签及其字面之间的间距 |
unicode-bom | 要求或禁止 Unicode 字节顺序标记 (BOM) |
wrap-iife | 立即调用 function 需要括号 |
wrap-regex | 需要正则表达式字面周围的括号 |
yield-star-spacing | 在 yield* 表达式中要求或不允许在 * 周围有空格 |
# 已弃用
规则 | 描述 |
---|---|
callback-return | 此规则在 ESLint v7.0.0 中已弃用。请使用 eslint-plugin-node 中的相应规则。 |
global-require | 此规则在 ESLint v7.0.0 中已弃用。请使用 eslint-plugin-node 中的相应规则。 |
handle-callback-err | 此规则在 ESLint v7.0.0 中已弃用。请使用 eslint-plugin-node 中的相应规则。 |
id-blacklist | 此规则在 ESLint v7.5.0 中已弃用,并被 id-denylist 规则取代。 |
indent-legacy | 此规则在 ESLint v4.0.0 中已弃用。 |
lines-around-directive | 此规则在 ESLint v4.0.0 中已弃用,并被 padding-line-between-statements 规则取代。 |
newline-after-var | 此规则在 ESLint v4.0.0 中已弃用,并被 padding-line-between-statements 规则取代。 |
newline-before-return | 此规则在 ESLint v4.0.0 中已弃用,并被 padding-line-between-statements 规则取代。 |
no-buffer-constructor | 此规则在 ESLint v7.0.0 中已弃用。请使用 eslint-plugin-node 中的相应规则。 |
no-catch-shadow | 此规则在 ESLint v5.1.0 中已弃用。 |
no-mixed-requires | 此规则在 ESLint v7.0.0 中已弃用。请使用 eslint-plugin-node 中的相应规则。 |
no-native-reassign | 此规则在 ESLint v3.3.0 中已弃用,并被 no-global-assign 规则取代。 |
no-negated-in-lhs | 此规则在 ESLint v3.3.0 中已弃用,并被 no-unsafe-negation 规则取代。 |
no-new-require | 此规则在 ESLint v7.0.0 中已弃用。请使用 eslint-plugin-node 中的相应规则。 |
no-path-concat | 此规则在 ESLint v7.0.0 中已弃用。请使用 eslint-plugin-node 中的相应规则。 |
no-process-env | 此规则在 ESLint v7.0.0 中已弃用。请使用 eslint-plugin-node 中的相应规则。 |
no-process-exit | 此规则在 ESLint v7.0.0 中已弃用。请使用 eslint-plugin-node 中的相应规则。 |
no-restricted-modules | 此规则在 ESLint v7.0.0 中已弃用。请使用 eslint-plugin-node 中的相应规则。 |
no-spaced-func | 此规则在 ESLint v3.3.0 中已弃用,并被 func-call-spacing 规则取代。 |
no-sync | 此规则在 ESLint v7.0.0 中已弃用。请使用 eslint-plugin-node 中的相应规则。 |
prefer-reflect | 此规则在 ESLint v3.9.0 中已弃用,不会被替换。这条规则的初衷现在似乎被误导了,因为我们已经了解到 Reflect 方法实际上并不是要替换规则建议的 Object 对应物,而是作为低级原语存在,与代理一起使用以复制默认值各种先前存在的功能的行为。 |
require-jsdoc | 此规则是 ESLint v5.10.0 中的 deprecated 。 |
valid-jsdoc | 此规则是 ESLint v5.10.0 中的 deprecated 。 |
# 已移除
规则 | 描述 |
---|---|
generator-star | 在生成器函数中强制星号周围的间距一致。 |
global-strict | 在全局范围内要求或禁止严格模式指令。 |
no-arrow-condition | 在需要测试条件的地方禁止使用箭头函数。 |
no-comma-dangle | 不允许在对象和数组字面量中使用尾随逗号。 |
no-empty-class | 禁止在正则表达式中使用空字符类。 |
no-empty-label | 不允许使用除循环和开关之外的任何标签。 |
no-extra-strict | 当已经处于严格模式时,不允许使用严格模式指令。 |
no-reserved-keys | 不允许不带引号的保留字作为对象字面中的属性名称。 |
no-space-before-semi | 分号前不允许有空格。 |
no-wrap-func | 不允许在函数表达式周围使用不必要的括号。 |
space-after-function-name | 在函数定义中的名称后强制使用一致的间距。 |
space-after-keywords | 在关键字之后强制执行一致的间距。 |
space-before-function-parentheses | 在函数定义中打开括号之前强制保持一致的间距。 |
space-before-keywords | 在关键字之前强制执行一致的间距。 |
space-in-brackets | 在对象字面的大括号和数组字面的括号内强制保持一致的间距。 |
space-return-throw-case | return 、throw 和 case 关键字后需要空格。 |
space-unary-word-ops | 一元字运算符后需要空格。 |
spaced-line-comment | 在行注释中强制在 // 之后保持一致的间距。 |