版本

规则参考

ESLint 中的规则按类型分组,以帮助您理解其用途。每个规则都有表情符号表示

推荐

配置文件中使用来自 @eslint/jsrecommended 配置启用此规则

🔧 可修复

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

💡 有建议

此规则报告的某些问题可以通过编辑器建议手动修复

❄️ 冻结

此规则目前处于冻结状态,不接受功能请求。

可能的问题

这些规则与代码中可能的逻辑错误有关

强制数组方法的回调中包含 return 语句

类别

💡 建议

在构造函数中要求 super() 调用

类别

扩展

强制 for 循环更新子句以正确的方向移动计数器

类别

扩展

强制 getter 中包含 return 语句

类别

扩展

禁止在循环内部使用 await

类别

禁止重新分配类成员

类别

扩展

禁止在条件表达式中使用赋值运算符

类别

扩展

禁止重新分配 const 变量

类别

扩展

禁止在正则表达式中使用控制字符

类别

扩展

禁用 debugger 的使用

类别

扩展

禁止在 function 定义中出现重复的参数

类别

扩展

禁止在 if-else-if 链中出现重复条件

类别

扩展

禁止在对象字面量中出现重复键

类别

扩展

禁止重复的 case 标签

类别

扩展

禁止空解构模式

类别

扩展

禁止在 catch 子句中重新分配异常

类别

扩展

禁止 case 语句的意外穿透

类别

扩展

禁止重新分配 function 声明

类别

扩展

禁止给导入的绑定赋值

类别

扩展

禁止在嵌套块中使用变量或 function 声明

类别

禁止在 RegExp 构造函数中使用无效的正则表达式字符串

类别

扩展

禁止精度会丢失的数字字面量

类别

扩展

禁止将全局对象属性作为函数调用

类别

扩展

禁止直接在对象上调用某些 Object.prototype 方法

类别

扩展

💡 建议

禁止左右两侧完全相同的赋值

类别

扩展

禁止左右两侧完全相同的比较

类别

禁止从 setter 返回值

类别

扩展

禁止在构造函数中在调用 super() 之前使用 this/super

类别

扩展

禁止使用未声明的变量,除非在 /*global */ 注释中提及

类别

扩展

禁止在 returnthrowcontinuebreak 语句之后出现不可访问的代码

类别

扩展

禁止循环体只允许一次迭代的循环

类别

禁止在 finally 块中使用控制流语句

类别

扩展

禁止否定关系运算符的左操作数

类别

扩展

💡 建议

禁止未使用的变量

类别

扩展

💡 建议

禁止在变量定义之前使用它们

类别

禁止在未使用值时进行变量赋值

类别

禁止在正则表达式中出现无用的反向引用

类别

扩展

禁止由于使用 awaityield 而可能导致竞争条件的赋值

类别

在检查 NaN 时要求调用 isNaN()

类别

扩展

💡 建议

强制将 typeof 表达式与有效的字符串进行比较

类别

扩展

💡 建议

建议

这些规则建议了其他做事方式

强制在对象和类中使用 getter 和 setter 对

类别
arrow-body-style

❄️ 冻结

要求箭头函数体周围使用大括号

类别

🔧 修复

强制在变量定义的作用域内使用变量

类别
camelcase

❄️ 冻结

强制使用驼峰命名约定

类别
capitalized-comments

❄️ 冻结

强制或禁止注释首字母大写

类别

🔧 修复

强制程序中允许的最大循环复杂度

类别

要求 return 语句始终或从不指定值

类别
consistent-this

❄️ 冻结

强制在捕获当前执行上下文时使用一致的命名

类别
curly

❄️ 冻结

强制所有控制语句使用一致的大括号风格

类别

🔧 修复

switch 语句中要求 default case

类别

强制 switch 语句中的 default 子句放在最后

类别
default-param-last

❄️ 冻结

强制默认参数放在最后

类别
dot-notation

❄️ 冻结

尽可能强制使用点表示法

类别

🔧 修复

要求使用 ===!==

类别

🔧 修复

func-name-matching

❄️ 冻结

要求函数名与分配给它们的变量或属性的名称匹配

类别

要求或禁止命名的 function 表达式

类别
func-style

❄️ 冻结

强制一致使用 function 声明或赋值给变量的表达式

类别

要求在对象字面量和类中分组访问器对

类别

要求 for-in 循环包含 if 语句

类别
id-denylist

❄️ 冻结

禁用指定的标识符

类别
id-length

❄️ 冻结

强制最小和最大标识符长度

类别
id-match

❄️ 冻结

要求标识符与指定的正则表达式匹配

类别
init-declarations

❄️ 冻结

要求或禁止在变量声明中进行初始化

类别

强制块可以嵌套的最大深度

类别

强制每个文件的最大行数

类别

强制回调可以嵌套的最大深度

类别

强制函数定义中参数的最大数量

类别

强制函数块中允许的最大语句数

类别

要求构造函数名称以大写字母开头

类别

禁用 alertconfirmprompt 的使用

类别

禁用位运算符

类别

禁用 arguments.callerarguments.callee 的使用

类别

禁止在 case 子句中使用词法声明

类别

扩展

💡 建议

禁用 console 的使用

类别

💡 建议

no-continue

❄️ 冻结

禁用 continue 语句

类别

禁止删除变量

类别

扩展

no-div-regex

❄️ 冻结

禁止在正则表达式开头显式使用等号

类别

🔧 修复

no-else-return

❄️ 冻结

if 语句中,当有 return 语句后禁止使用 else

类别

🔧 修复

禁止空块语句

类别

扩展

💡 建议

禁止在没有类型检查运算符的情况下进行 null 比较

类别

禁用 eval() 的使用

类别

禁止扩展原生类型

类别

禁止不必要的 .bind() 调用

类别

🔧 修复

no-extra-boolean-cast

❄️ 冻结

禁止不必要的布尔类型转换

类别

扩展

🔧 修复

no-extra-label

❄️ 冻结

禁止不必要的标签

类别

🔧 修复

禁止赋值给原生对象或只读全局变量

类别

扩展

no-implicit-coercion

❄️ 冻结

禁止简写类型转换

类别

🔧 修复

💡 建议

禁止在全局作用域中声明

类别

禁用类似 eval() 的方法

类别
no-inline-comments

❄️ 冻结

禁止在代码后添加内联注释

类别

禁止在 this 值为 undefined 的上下文中使用 this

类别

禁止使用 __iterator__ 属性

类别
no-label-var

❄️ 冻结

禁止标签与变量共享名称

类别
no-labels

❄️ 冻结

禁止标签语句

类别

禁止不必要的嵌套块

类别
no-lonely-if

❄️ 冻结

禁止 if 语句作为 else 块中唯一的语句

类别

🔧 修复

禁止在循环语句内部包含不安全引用的函数声明

类别
no-magic-numbers

❄️ 冻结

禁止魔术数字

类别

禁止使用链式赋值表达式

类别
no-multi-str

❄️ 冻结

禁止多行字符串

类别
no-nested-ternary

❄️ 冻结

禁止嵌套的三元表达式

类别

禁止在赋值或比较之外使用 new 运算符

类别

禁止对 Function 对象使用 new 运算符

类别

禁止对 StringNumberBoolean 对象使用 new 运算符

类别

禁止字符串字面量中的 \8\9 转义序列

类别

扩展

💡 建议

禁止在没有参数的情况下调用 Object 构造函数

类别

💡 建议

禁止八进制字面量

类别

扩展

禁止字符串字面量中的八进制转义序列

类别

禁止重新赋值函数参数

类别
no-plusplus

❄️ 冻结

禁用一元运算符 ++--

类别

禁止使用 __proto__ 属性

类别

禁止变量的重复声明

类别

扩展

禁止在正则表达式中出现多个空格

类别

扩展

🔧 修复

当通过 import 加载时,禁止指定的模块

类别

禁止在 return 语句中使用赋值运算符

类别

禁止 javascript: URL

类别

禁止逗号运算符

类别

禁止变量声明从外部作用域中声明的变量中获取阴影

类别
no-ternary

❄️ 冻结

禁止三元运算符

类别

禁止抛出字面量作为异常

类别
no-undef-init

❄️ 冻结

禁止将变量初始化为 undefined

类别

🔧 修复

no-undefined

❄️ 冻结

禁止将 undefined 用作标识符

类别
no-underscore-dangle

❄️ 冻结

禁止在标识符中使用悬空下划线

类别
no-unneeded-ternary

❄️ 冻结

当存在更简单的替代方案时,禁止使用三元运算符

类别

🔧 修复

禁止未使用的标签

类别

扩展

🔧 修复

禁止不必要的 .call().apply() 调用

类别

禁止不必要的 catch 子句

类别

扩展

禁止在对象和类中使用不必要的计算属性键

类别

🔧 修复

no-useless-concat

❄️ 冻结

禁止不必要的字面量或模板字面量连接

类别

禁止不必要的转义字符

类别

扩展

💡 建议

禁止将导入、导出和解构赋值重命名为相同的名称

类别

🔧 修复

禁止冗余的 return 语句

类别

🔧 修复

要求使用 letconst 而不是 var

类别

🔧 修复

no-void

❄️ 冻结

禁止 void 运算符

类别
no-warning-comments

❄️ 冻结

禁止在注释中出现指定的警告术语

类别

禁止 with 语句

类别

扩展

object-shorthand

❄️ 冻结

要求或禁止对象字面量的方法和属性简写语法

类别

🔧 修复

one-var

❄️ 冻结

强制变量在函数中一起或单独声明

类别

🔧 修复

operator-assignment

❄️ 冻结

在可能的情况下,要求或禁止赋值运算符简写

类别

🔧 修复

prefer-arrow-callback

❄️ 冻结

要求为回调使用箭头函数

类别

🔧 修复

对于声明后不再重新赋值的变量,要求使用 const 声明

类别

🔧 修复

prefer-destructuring

❄️ 冻结

要求从数组和/或对象进行解构

类别

🔧 修复

禁止使用 parseInt()Number.parseInt(),而推荐使用二进制、八进制和十六进制字面量

类别

🔧 修复

禁止使用 Object.prototype.hasOwnProperty.call(),而推荐使用 Object.hasOwn()

类别

🔧 修复

prefer-object-spread

❄️ 冻结

禁止将对象字面量用作第一个参数来使用 Object.assign,而推荐使用对象展开运算符

类别

🔧 修复

禁止使用 RegExp 构造函数,而推荐使用正则表达式字面量

类别

💡 建议

要求使用剩余参数而不是 arguments

类别
prefer-spread

❄️ 冻结

要求使用展开运算符而不是 .apply()

类别
prefer-template

❄️ 冻结

要求使用模板字面量而不是字符串连接

类别

🔧 修复

强制在使用 parseInt() 时始终使用基数参数

类别

💡 建议

禁止没有 await 表达式的异步函数

类别

💡 建议

强制在正则表达式上使用 uv 标志

类别

💡 建议

要求生成器函数包含 yield

类别

扩展

sort-imports

❄️ 冻结

强制模块内的 import 声明进行排序

类别

🔧 修复

sort-keys

❄️ 冻结

要求对象键进行排序

类别
sort-vars

❄️ 冻结

要求在同一声明块中的变量进行排序

类别

🔧 修复

要求或禁止严格模式指令

类别

🔧 修复

vars-on-top

❄️ 冻结

要求 var 声明放在其包含作用域的顶部

类别
yoda

❄️ 冻结

要求或禁止 “Yoda” 条件

类别

🔧 修复

布局 & 格式化

这些规则关心代码的外观而不是其执行方式

要求或禁止 Unicode 字节顺序标记 (BOM)

类别

🔧 修复

已弃用

这些规则已根据弃用政策弃用,并被较新的规则取代

id-blacklist 已弃用

已替换为 id-denylist

类别

no-catch-shadow 已弃用

已替换为 no-shadow

类别

no-native-reassign 已弃用

已替换为 no-global-assign

类别

no-negated-in-lhs 已弃用

已替换为 no-unsafe-negation

类别

no-return-await 已弃用

类别

💡 建议

prefer-reflect 已弃用

类别

已移除

这些来自旧版本 ESLint 的规则(在 弃用策略 存在之前)已被新规则取代

global-strict 已移除

已替换为 strict

no-empty-label 已移除

已替换为 no-labels

no-extra-strict 已移除

已替换为 strict

valid-jsdoc 已移除

require-jsdoc 已移除

更改语言