eslint V4.1.1 规则简介

本文详细介绍了ESLint的各种规则,包括可能性的错误、最佳实践、严格模式等,并对每种规则进行了说明,适合开发者用于规范代码风格。

eslint V4.1.1 规则简介

花了一天整理的,可能部分翻译的有错误,后面会再校对一次

规则说明:默认情况下不会启用任何规则。配置文件中的"extends":"eslint:recommended"属性可以启用一些默认的验证规则,默认的规则在下表会用R表示出来

使用--fix命令可以自动修复一些特定的规则(大部分为空格类规则),下面用F表示

规则说明

0=off,1=warn, 2=error

可能性的错误

这些规则主要针对语法错误和逻辑错误

参数描述备注例子
for-directionfor循环 需要往正确的方向循环,避免死循环 案例
no-await-in-loop禁止循环中有 await 案例
no-compare-neg-zero禁止和 -0 比较R案例
no-cond-assign禁止在条件表达式使用赋值R案例
no-console禁止使用consoleR案例
no-constant-condition禁止在条件中使用常量表达式R案例
no-control-regex禁止在正则中使用控制字符R案例
no-debugger禁止使用debuggerR F案例
no-dupe-args禁止在函数定义中传入重复的参数R案例
no-dupe-keys禁止在对象字面量中使用重复的keyR案例
no-duplicate-case禁止在case中出现重复的标签R案例
no-empty禁止块语句中的内容为空R案例
no-empty-character-class禁止正则表达式中的[]内容为空R案例
no-ex-assign禁止给catch语句中的异常参数赋值R案例
no-extra-boolean-cast禁止不必要的bool转换R F案例
no-extra-parens禁止不需要的括号F案例
no-extra-semi禁止多余的分号R F案例
no-func-assign禁止重复的函数声明R案例
no-inner-declarations禁止在块语句中使用声明(变量或函数)R案例
no-invalid-regexp禁止无效的正则R案例
no-irregular-whitespace禁止不统一的空格R案例
no-obj-calls禁止重定义内置全局对象R案例
no-prototype-builtins禁止在对象上直接调用object.prototype方法 案例
no-regex-spaces禁止在正则表达式字面量中使用多个空格R F案例
no-sparse-arrays禁止稀疏数组R案例
no-template-curly-in-string禁止在模板中使用不同的符号 案例
no-unexpected-multiline禁止多行表达式R案例
no-unreachable禁止写无法执行的代码(return,throw,contine,break)R案例
no-unsafe-finally禁止在finally中使用return,throw,contine,breakR案例
no-unsafe-negation禁止在运算符左侧执行关系运算R F案例
use-isnan禁止比较时使用NaN,只能用isNaN()R案例
valid-jsdoc强制验证jsdoc规则 案例
valid-typeof强制使用合法的typeof的值R案例

最佳实践

这些规则是能够帮助你避免一些问题的最好方法

参数描述备注例子
accessor-pairs强制在对象中使用getter/setter 案例
array-callback-return强制在数组方法的回调中执行return 案例
block-scoped-var强制使用它们定义的范围内的变量 案例
class-methods-use-this强制该类方法利用 this 案例
complexity强制设置一个循环的最大值 案例
consistent-return要求return语句要么始终有值要么始终没值 案例
curly强制所有控制语句执行统一的括号风格F案例
default-caseswitch语句中需要有default值 案例
dot-location强制在点之前和之后执行一致的换行符F案例
dot-notation强制使用.符号,避免[]F案例
eqeqeq使用 === 和 !==F案例
guard-for-infor in循环要用if语句过滤 案例
no-alert禁止使用alert,confirm,prompt 案例
no-caller禁止使用arguments.caller或 arguments.callee 案例
no-case-declarations禁止在case子句中使用词法声明,一定要用,封装在块中R案例
no-div-regex禁止在正则表达式开头用除法 案例
no-else-returnif语句里面有return,后面禁止跟else语句F案例
no-empty-function禁止空函数 案例
no-empty-pattern禁止空的解构模式R案例
no-eq-null禁止用类型检查运算符和null比较 案例
no-eval禁止使用eval() 案例
no-extend-native禁止扩展native类型 案例
no-extra-bind禁止非必要的函数绑定F案例
no-extra-label禁止非必要的labelF案例
no-fallthrough禁止switch穿透R案例
no-floating-decimal禁止省略浮点数中的0F案例
no-global-assign禁止对本地对象或只读全局变量重定义R案例
no-implicit-coercion禁止隐式转换F案例
no-implicit-globals禁止在全局范围内声明变量和函数 案例
no-implied-eval禁止使用隐式eval 案例
no-invalid-this禁止无效的this,只能用在构造器,类,对象字面量 案例
no-extra-label禁止非必要的labelF案例
no-iterator禁止使用__iterator__ 属性 案例
no-labels禁止标签声明 案例
no-lone-blocks禁止非必要的嵌套块F案例
no-loop-func禁止在循环中使用函数(如果没有引用外部变量不形成闭包就可以) 案例
no-magic-numbers禁止魔数字(硬写到代码里的数字常量) 案例
no-multi-spaces禁止多个空格)F案例
no-multi-str禁止多行字符串(不能用/换行) 案例
no-new禁止在使用new构造一个实例后不赋值 案例
no-new-func禁止使用new Function 案例
no-new-wrappers禁止使用new创建包装实例,new String new Boolean new Number 案例
no-octal禁止使用八进制数字R案例
no-octal-escape禁止使用八进制转义序列 案例
no-param-reassign禁止重新定义参数 案例
no-proto禁止使用__proto__ 案例
no-redeclare禁止重复声明变量R案例
no-restricted-properties禁止在一些特定的对象上的特定属性 案例
no-return-assignreturn 语句中不能有赋值表达式 案例
no-return-await禁止非必要的return await 案例
no-script-url禁止使用javascript:void(0)R案例
no-self-assign禁止双方完全一致的任务R案例
no-self-compare禁止比较自身 案例
no-sequences禁止使用逗号运算符 案例
no-throw-literal禁止抛出字面量错误 throw "error"; 案例
no-unmodified-loop-condition禁止不变的循环条件 案例
no-unused-expressions禁止无用的表达式 案例
no-unused-labels禁止不用的labelR F案例
no-useless-call禁止非必要的call和apply 案例
no-useless-concat禁止不必要的连接文字或模板文字 案例
no-useless-escape禁止不必要的转义字符R案例
no-void禁止使用void 案例
no-warning-comments禁止有警告备注 案例
no-with禁止使用with声明 案例
prefer-promise-reject-errors使用error对象作为Promise驳回原因 案例
radixparseInt必须指定第二个参数 案例
require-await禁止async中无await表达式 案例
vars-on-topvar必须放在作用域顶部 案例
wrap-iife立即执行函数表达式的小括号风格F案例
yoda禁止尤达条件F案例

严格模式

这些规则是能够帮助你避免一些问题的最好方法

参数描述备注例子
strict使用严格模式F案例

变量

这些规则与变量声明有关

参数描述备注例子
init-declarations声明时必须赋初值 案例
no-catch-shadow禁止catch子句参数与外部作用域变量同名 案例
no-delete-var禁止删除变量R案例
no-label-var禁止label名与var声明的变量名相同 案例
no-restricted-globals禁止指定的全局变量 案例
no-shadow禁止外部作用域中的变量与它所包含的作用域中的变量或参数同名 案例
no-shadow-restricted-names严格模式中规定的限制标识符不能作为声明时的变量名使用 案例
no-undef不能有未定义的变量,除非在/global /注释中R案例
no-undef-init禁止将变量初始化为undefinedF案例
no-undefined禁止使用undefined作为标识符 案例
no-unused-vars禁止未使用的变量R案例
no-use-before-define禁止在定义之前使用变量 案例

Node.js and CommonJS

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

参数描述备注例子
callback-return避免多次调用回调 案例
global-require需要将require()调用放置在模块顶部 案例
handle-callback-err在回调中需要错误处理 案例
no-buffer-constructor禁止使用Buffer()构造函数 案例
no-mixed-requires不允许调用与常规变量声明混合 案例
no-new-require禁止使用new require 案例
no-path-concat禁止使用__dirname和__filename连接字符串 案例
no-process-env禁止使用process.env 案例
no-process-exit禁止使用process.exit() 案例
no-process-env禁止使用process.env 案例
no-restricted-modules禁止通过require加载指定的模块,用了会报错 案例
no-syncnodejs 禁止同步方法 案例

代码风格

这些规则主要是关于代码风格的,主观因素较强

参数描述备注例子
array-bracket-newline强制在数组的头尾括号之前执行换行F案例
array-bracket-spacing强制在数组括号内执行一致的间隔F案例
array-element-newline强制在每个数组元素之后执行换行符F案例
block-spacing强制在单行块内实施一致的间距F案例
brace-style强制块的括号风格统一 案例
camelcase强制驼峰命名 案例
capitalized-comments强制或禁止注释的第一个字母大写F案例
comma-dangle逗号风格,换行时在行首还是行尾F案例
comma-spacing强制逗号前后的空格F案例
comma-style块的括号风格统一 案例
computed-property-spacing强制在计算属性括号内一致的间距F案例
consistent-this强制规定this别名 案例
eol-last强制添加或禁止在文件末尾的换行F案例
func-call-spacing强制添加或禁止在函数标识符与其调用之间的间距F案例
func-name-matching要求函数名称与其分配到的变量或属性的名称相匹配 案例
func-names强制添加或禁止命名函数表达式 案例
func-style强制统一使用函数声明或表达式 案例
id-blacklist禁止指定的标识符 案例
id-length强制标识符长度最小和最大值 案例
id-match要求标识符与指定的正则表达式匹配 案例
indent强制统一的缩进F案例
jsx-quotes强制在JSX属性中一致地使用双引号或单引号F案例
key-spacing强制在对象文字属性中强制实现键和值之间的一致间距F案例
keyword-spacing强制在关键字前后执行一致的间距F案例
line-comment-position强制规定注释的位置 案例
linebreak-style强制换行风格F案例
lines-around-comment强制注释前后空行F案例
max-depth强制嵌套的最大深度 案例
max-len强制字符串最大长度 案例
max-lines强制每个文件的最大行数 案例
max-nested-callbacks强制最大深度,回调可以嵌套 案例
max-params强制函数最大参数值 案例
max-statements强制在功能块中允许的最大数量的语句 案例
max-statements-per-line强制每行允许的最大数量的语句 案例
multiline-ternary强制三元表达式换行 案例
new-cap要求构造函数名称以大写字母开头 案例
new-parensnew时,没有入参的话必须加小括号F案例
newline-per-chained-call链式调用后每次都需要换行符 案例
no-array-constructor禁止使用数组构造器 案例
no-bitwise禁止使用按位运算符 案例
no-continue禁止使用continue 案例
no-inline-comments禁止代码后的内联注释 案例
no-lonely-if禁止else语句内只有if语句F案例
no-mixed-operators禁止混合二进制运算符 案例
no-mixed-spaces-and-tabs禁止混合空格和制表符缩进R案例
no-multi-assign禁止使用链式赋值表达式 案例
no-multi-assign禁止使用链式赋值表达式 案例
no-multiple-empty-lines禁止多行空格F案例
no-negated-condition禁止否定条件 案例
no-nested-ternary禁止嵌套的三元表达式 案例
no-new-object禁止使用new Object() 案例
no-plusplus禁止使用一元运算符++和-- 案例
no-restricted-syntax禁止指定语法 案例
no-tabs禁止所有tabs 案例
no-ternary禁止使用三元表达式 案例
no-trailing-spaces禁止在行尾有空格F案例
no-underscore-dangle禁止在标识符中用下划线 案例
no-unneeded-ternary在简单判断中,禁止使用三元表达式F案例
no-whitespace-before-property禁止在属性前加空白F案例
nonblock-statement-body-position强制单行声明的位置F案例
object-curly-newline强制在大括号内执行一致的换行符F案例
object-curly-spacing强制在大括号内统一的空格F案例
object-property-newline强制将对象属性放在不同的行上F案例
one-var强制变量在函数中一起声明或单独声明 案例
one-var-declaration-per-line强制单行声明的位置F案例
operator-assignment在可能的情况下强制或禁止赋值运算符的简写F案例
operator-linebreak强制连接符统一的换行F案例
padded-blocks强制或禁止在块内填充空格F案例
padding-line-between-statements强制或禁止在语句之间填充空格F案例
quote-props强制对象字面量中的属性名双引号F案例
quotes强制统一使用反引号,双引号或单引号F案例
require-jsdoc需要JSDoc 注释 案例
semi强制语句分号结尾F案例
semi-spacing强制分号前后空格F案例
semi-style强制分号位置F案例
sort-keys要求对象键进行排序 案例
sort-vars要求同一声明块中的变量进行排序 案例
space-before-blocks强制块区域内统一的间隔F案例
space-before-function-paren强制在Function括号之前执行统一的间距F案例
space-in-parens强制在括号内用统一的间距F案例
space-infix-ops中缀操作符周围需要有空格F案例
space-unary-ops强制在一元操作员之前或之后有统一的间距F案例
spaced-comment强制在注释中的//或/ *之后用统一的间距F案例
switch-colon-spacing在switch语句的冒号附近加间隔F案例
template-tag-spacing强制或禁止模板标签与其文字之间的间距F案例
unicode-bom强制或禁止Unicode字节顺序标记(BOM)F案例
wrap-regex正则表达式字面量用小括号包起来F案例

ECMAScript 6

这些规则涉及ES6(ES2015):

参数描述备注例子
arrow-body-style允许箭头函数F案例
arrow-parens箭头函数用小括号括起来F案例
arrow-spacing箭头的前/后括号空格F案例
constructor-super在构造函数中需要super()调用R案例
generator-star-spacing在生成器函数中的*操作符周围保持统一的间距F案例
no-class-assign禁止重新分配Class成员R案例
no-confusing-arrow在可能会与对比运算符混淆的地方禁止箭头功能F案例
no-const-assign禁止重新分配常量变量R案例
no-dupe-class-members禁止重复的class成员R案例
no-duplicate-imports禁止重复模块导入 案例
no-new-symbol禁止在Symbol对象用new操作符R案例
no-restricted-imports通过import加载时禁止指定的模块 案例
no-this-before-super在构造函数中调用super()之前禁止用thisR案例
no-useless-computed-key禁止对象文字中不必要的计算属性键F案例
no-useless-constructor禁止不必要的构造函数 案例
no-useless-rename禁止不必要的重命名F案例
no-var用let,const代替varF案例
object-shorthand强制或禁止对象文字的方法和属性简写语法F案例
prefer-arrow-callback需要箭头功能作为回调F案例
prefer-const永不改变的变量用constF案例
prefer-destructuring需要从数组和/或对象中进行解构 案例
prefer-numeric-literals禁止parseInt()支持二进制,八进制和十六进制文字F案例
prefer-rest-params需要reset参数 案例
prefer-spread需要...操作符替代.apply()F案例
prefer-template需要模板语法而不是字符串连接F案例
require-yield生成器函数必须有yieldR案例
rest-spread-spacing强制rest和展开运算符的间距F案例
sort-imports强制在模块中执行排序的导入声明F案例
symbol-description需要Symbol说明 案例
template-curly-spacing强制或禁止模板字符串的嵌入式表达式周围有空格F案例
yield-star-spacing强制或禁止的yield *中的间距F案例

弃用

这些规则已经被新的规则替换,懒得写了

弃用列表

删除

旧版本ESLint的这些规则已被更新的规则所取代,懒得写了

删除列表

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值