eslint V4.1.1 规则简介
花了一天整理的,可能部分翻译的有错误,后面会再校对一次
规则说明:默认情况下不会启用任何规则。配置文件中的"extends":"eslint:recommended"
属性可以启用一些默认的验证规则,默认的规则在下表会用R表示出来
使用--fix
命令可以自动修复一些特定的规则(大部分为空格类规则),下面用F表示
规则说明
0=off,1=warn, 2=error
可能性的错误
这些规则主要针对语法错误和逻辑错误
参数 | 描述 | 备注 | 例子 |
---|---|---|---|
for-direction | for循环 需要往正确的方向循环,避免死循环 | 案例 | |
no-await-in-loop | 禁止循环中有 await | 案例 | |
no-compare-neg-zero | 禁止和 -0 比较 | R | 案例 |
no-cond-assign | 禁止在条件表达式使用赋值 | R | 案例 |
no-console | 禁止使用console | R | 案例 |
no-constant-condition | 禁止在条件中使用常量表达式 | R | 案例 |
no-control-regex | 禁止在正则中使用控制字符 | R | 案例 |
no-debugger | 禁止使用debugger | R F | 案例 |
no-dupe-args | 禁止在函数定义中传入重复的参数 | R | 案例 |
no-dupe-keys | 禁止在对象字面量中使用重复的key | R | 案例 |
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,break | R | 案例 |
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-case | switch语句中需要有default值 | 案例 | |
dot-location | 强制在点之前和之后执行一致的换行符 | F | 案例 |
dot-notation | 强制使用.符号,避免[] | F | 案例 |
eqeqeq | 使用 === 和 !== | F | 案例 |
guard-for-in | for in循环要用if语句过滤 | 案例 | |
no-alert | 禁止使用alert,confirm,prompt | 案例 | |
no-caller | 禁止使用arguments.caller或 arguments.callee | 案例 | |
no-case-declarations | 禁止在case子句中使用词法声明,一定要用,封装在块中 | R | 案例 |
no-div-regex | 禁止在正则表达式开头用除法 | 案例 | |
no-else-return | if语句里面有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 | 禁止非必要的label | F | 案例 |
no-fallthrough | 禁止switch穿透 | R | 案例 |
no-floating-decimal | 禁止省略浮点数中的0 | F | 案例 |
no-global-assign | 禁止对本地对象或只读全局变量重定义 | R | 案例 |
no-implicit-coercion | 禁止隐式转换 | F | 案例 |
no-implicit-globals | 禁止在全局范围内声明变量和函数 | 案例 | |
no-implied-eval | 禁止使用隐式eval | 案例 | |
no-invalid-this | 禁止无效的this,只能用在构造器,类,对象字面量 | 案例 | |
no-extra-label | 禁止非必要的label | F | 案例 |
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-assign | return 语句中不能有赋值表达式 | 案例 | |
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 | 禁止不用的label | R 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驳回原因 | 案例 | |
radix | parseInt必须指定第二个参数 | 案例 | |
require-await | 禁止async中无await表达式 | 案例 | |
vars-on-top | var必须放在作用域顶部 | 案例 | |
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 | 禁止将变量初始化为undefined | F | 案例 |
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-sync | nodejs 禁止同步方法 | 案例 |
代码风格
这些规则主要是关于代码风格的,主观因素较强
参数 | 描述 | 备注 | 例子 |
---|---|---|---|
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-parens | new时,没有入参的话必须加小括号 | 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()之前禁止用this | R | 案例 |
no-useless-computed-key | 禁止对象文字中不必要的计算属性键 | F | 案例 |
no-useless-constructor | 禁止不必要的构造函数 | 案例 | |
no-useless-rename | 禁止不必要的重命名 | F | 案例 |
no-var | 用let,const代替var | F | 案例 |
object-shorthand | 强制或禁止对象文字的方法和属性简写语法 | F | 案例 |
prefer-arrow-callback | 需要箭头功能作为回调 | F | 案例 |
prefer-const | 永不改变的变量用const | F | 案例 |
prefer-destructuring | 需要从数组和/或对象中进行解构 | 案例 | |
prefer-numeric-literals | 禁止parseInt()支持二进制,八进制和十六进制文字 | F | 案例 |
prefer-rest-params | 需要reset参数 | 案例 | |
prefer-spread | 需要...操作符替代.apply() | F | 案例 |
prefer-template | 需要模板语法而不是字符串连接 | F | 案例 |
require-yield | 生成器函数必须有yield | R | 案例 |
rest-spread-spacing | 强制rest和展开运算符的间距 | F | 案例 |
sort-imports | 强制在模块中执行排序的导入声明 | F | 案例 |
symbol-description | 需要Symbol说明 | 案例 | |
template-curly-spacing | 强制或禁止模板字符串的嵌入式表达式周围有空格 | F | 案例 |
yield-star-spacing | 强制或禁止的yield *中的间距 | F | 案例 |
弃用
这些规则已经被新的规则替换,懒得写了
删除
旧版本ESLint的这些规则已被更新的规则所取代,懒得写了
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。