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