在线文档教程
Eslint
规则 | Rules

Rules

规则

ESLint中的规则按类别分组以帮助您了解其目的。

没有规则默认启用。"extends": "eslint:recommended"配置文件中的属性支持报告常见问题的规则,下面有复选标记。

--fix命令行上选择自动修复由具有低于扳手规则报告的问题(目前主要是空格)。

可能的错误

这些规则涉及JavaScript代码中可能的语法或逻辑错误:

for-dirction强制执行“for循环更新子句”将计数器向正确的方向移动。
gette-return在getter中强制执行return语句
no-await-in-loop不允许在循环内部等待
no-compare-neg-zero不允许与-0进行比较
no-cond-assign在条件表达式中禁止赋值运算符
no-console禁止使用控制台
no-constant-condition在条件中不允许常量表达式
no-control-regex 禁止在正则表达式中使用控制字符
no-debugger禁止使用调试器
no-dupe-args禁止在函数定义中使用重复的参数
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禁止重新分配函数声明
no-inner-declarations不允许嵌套块中的变量或函数声明
no-invalid-regexp禁止RegExp构造函数中的无效正则表达式字符串
no-irregular-whitespace禁止字符串和注释之外的不规则空白
no-obj-calls不允许调用全局对象属性作为函数
no-prototype-builtins不允许直接在对象上调用一些Object.prototype方法
no-regex-spaces禁止在正则表达式中使用多个空格
no-sparse-arrays不允许稀疏数组
no-template-curly-in-string不允许使用常规字符串中的模板文字占位符语法
no-unexpected-multiline不允许混淆多行表达式
no-unrachable返回,抛出,继续和中断语句后禁止无法访问的代码
no-unsafe-finally在finally块中禁止控制流语句
no-unsafe-negatio不允许否定关系运算符的左操作数
use-isnan在检查NaN时需要调用isNaN()
valid-jsdoc执行有效的JSDoc评论
valid-typeof强制将typeof表达式与有效字符串进行比较

最佳实践

这些规则涉及更好的方法来帮助您避免问题:

accessor-pairs在对象中强制执行getter和setter对
array-callback-return在数组方法的回调中强制执行返回语句
block-scoped-var在他们定义的范围内强制使用变量
class-methods-use-this强制该类方法利用这一点
complexity 强化程序中允许的最大圈复杂度
consistent-return 要求返回语句总是或永远不指定值
curly 为所有控制语句强制使用一致的括号样式
default-case 在switch语句中需要默认情况
dot-location 在点之前和之后强制执行一致的换行符
dot-notation 尽可能强制使用点符号
eqeqeq需要使用===和!==
guard-for-in 要求for-in循环包含if语句
no-alert 禁止使用警报,确认和提示
no-caller 禁止使用arguments.caller或arguments.callee
no-case-declarations在case子句中不允许使用词法声明
no-div-regex 在正则表达式的开头明确禁止除法运算符
no-else-return 在if语句中返回语句后禁止其他块
no-empty-function禁止空功能
no-empty-pattern 不允许空的解构模式
no-eq-null 在没有类型检查运算符的情况下禁止空比较
no-eval 不允许使用eval()
no-extend-native 不允许扩展本地类型
no-extra-bind 禁止对.bind()进行不必要的调用
no-extra-label 禁止不必要的标签
no-fallthrough不允许病例陈述的延期
no-floating-decimal 不允许数字文字中的前导小数点或尾随小数点
no-global-assign 禁止分配本地对象或只读全局变量
no-implicit-coercion 不允许简写类型转换
no-implicit-globals 在全局范围内禁止变量和函数声明
no-implied-eval 不允许使用类似eval()的方法
no-invalid-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对象的新操作符
no-new-wrappers 禁止使用String,Number和Boolean对象的新操作符
no-octal 不允许使用八进制文字
no-octal-escape 禁止字符串文字中的八进制转义序列
no-param-reassign 禁止重新分配功能参数
no-proto 禁止使用__proto__属性
no-redeclare 禁止变量重新声明
no-restricted-properties禁止某些对象的某些属性
no-return-assign 在返回语句中禁止赋值运算符
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-concat 不允许不必要的文字或模板字面连接
no-useless-escape 禁止不必要的转义字符
no-useless-return 不允许多余的返回语句
no-void 禁止无效操作员
no-warning-comments 禁止在评论中指定警告条款
no-with 不接受陈述
prefer-promise-reject-errors 要求使用Error对象作为Promise拒绝原因
radix 在使用parseInt()时强制一致使用radix参数
require-await 禁止不具有等待表达式的异步函数
vars-on-top 要求将var声明放置在其包含范围的顶部
wrap-iife 围绕立即函数调用需要括号
yoda要求或不允许“Yoda”条件

严格模式

这些规则涉及严格的模式指令:

strict要求或不允许严格的模式指令

变量

这些规则涉及变量声明:

init-declarations 在变量声明中要求或不允许初始化
no-catch-shadow 禁止外部作用域中影子变量的catch子句参数
no-delete-var 不允许删除变量
no-label-var 禁止与变量共享名称的标签
no-restricted-globals 禁止指定的全局变量
no-shadow 不允许来自外部作用域中声明的阴影变量的变量声明
no-shadow-restricted-names禁止遮蔽限制名称的标识符
no-undef 禁止使用未声明的变量,除非在/* global */ comments中提及
no-undef-init 不允许初始化变量未定义
no-undefined 禁止使用未定义的标识符
no-unused-vars 禁止未使用的变量
no-use-before-define 在定义之前不允许使用变量

Node.js 和 CommonJS

这些规则与在Node.js中运行的代码或者在CommonJS浏览器中运行的代码相关:

callback-return 回调后需要返回语句
global-require 要求require()调用放置在顶级模块范围内
handle-callback-err 需要在回调中进行错误处理
no-buffer-constructor不允许使用Buffer()构造函数
no-mixed-requires禁止要求调用与常规变量声明混合使用
no-new-require 禁止新的运营商打电话要求
no-path-concat 不允许使用__dirname和__filename进行字符串连接
no-process-env 禁止使用process.env
no-process-exit 禁止使用process.exit()
no-restricted-modules在按要求加载时禁止指定的模块
no-sync 禁止同步方法

文体问题

这些规则与风格指南相关,因此非常主观:

array-bracket-newline 在打开和关闭数组括号之前强制执行换行符
array-bracket-spacing强制数组括号内的一致间距
array-element-newline 在每个数组元素之后强制换行
block-spacing 禁止或强制执行开放区块之前和结束区块之前区块内的空间
brace-style 为块执行一致的支撑样式
camelcase强制执行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-paren-newline在函数括号内强制执行一致的换行符
id-blacklist 禁止指定标识符
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-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不允许使用数组构造函数
no-bitwise不允许按位运算符
no-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 在语句之间需要或不允许填充行
quote-props 需要引用对象字面值属性名称
quotes 强制一致使用反引号,双引号或单引号
require-jsdoc 需要JSDoc评论
semi 需要或不允许使用分号而不是ASI
semi-spacing 在分号之前和之后强制执行一致的间距
semi-style 强制分号的位置
sort-keys 需要对对象键进行排序
sort-vars 要求对同一个声明块中的变量进行排序
space-before-blocks 在块之前强制执行一致的间距
space-before-function-paren在函数定义左括号之前加强一致的间距
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对象的新操作符
no-restricted-imports 通过导入装入时禁止指定的模块
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需要对声明后永远不会重新赋值的变量使用常量声明
prefer-destructuring需要从数组和/或对象进行解构
prefer-numeric-literals禁止parseInt()和Number.parseInt()支持二进制,八进制和十六进制文字
prefer-rest-params 需要休息参数而不是参数
prefer-spread需要扩展运算符而不是.apply()
prefer-template需要模板字面值而不是字符串连接
require-yield需要生成器函数来包含yield
rest-spread-spacing强制休息和传播运算符及其表达式之间的间隔
sort-imports 在模块中强制排序的导入声明
symbol-description 需要符号描述
template-curly-spacing要求或不允许围绕嵌入的模板字符串表达式进行间距
yield-star-spacing *在yield *表达式中需要或不允许间距*

弃用

这些规则根据弃用政策已被弃用,并由新规定取代:

Deprecated rule取而代之
indent-legacy 缩进
lines-around-directive填充线之间语句
newline-after-var 填充线之间语句
newline-before-return填充线之间语句
no-native-reassign 没有全局指派
no-negated-in-lhs没有不安全的否定
no-spaced-func FUNC呼叫间隔
prefer-reflect(没有替换)

删除

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

Removed rule 取而代之
generator-star发电机星级间距
global-strict严格
no-arrow-condition无混乱-arrowno恒定条件
no-comma-dangle逗号吊着
no-empty-class无空字符类
no-empty-label无标签
no-extra-strictstrict
no-reserved-keys报价道具
no-space-before-semi半间距
no-wrap-func no-extra-parens
space-after-function-name空间前方的功能括号
space-after-keywords关键字间距
space-before-function-parentheses空间前方的功能括号
space-before-keywords 关键字间距
space-in-brackets 对象卷曲spacingarray支架间距
space-return-throw-case 关键字间距
space-unary-word-ops space-unary-ops
spaced-line-comment 间隔评论