Eslint(二):规则字典

原创
2018/01/23 14:18
阅读数 1W

 

字数:6190

阅读时间:30分钟

 

Standard规范+Angular规范集合

代码格式

indent

"indent": ["error", 4]

规定使用几个空格进行缩进。第二个参数表示空格的个数,默认是2个,我们这个设置的是四格。

 

block-spacing

"block-spacing": ["error", "always"]

规定单行代码两边加空格。第二个参数有"always"、"never",默认值为"always",表示需要至少一个空格,"never"表示不需要空格。代码示例如下:

function foo () {return true}    // ✗ avoid
function foo () { return true }  // ✓ ok

 

brace-style

"brace-style": ["error", "1tbs", { "allowSingleLine": true }]

规定 “else” 关键字要与花括号保持在同一行。第二个参数表示不同的规则风格,可取"1tbs"、“stroustrup”、“allman”三种风格。第三个参数表示是否允许大括号在同一行,默认值为 “false”。代码示例如下:

// ✓ ok
if (condition) {
  // ...
} else {
  // ...
}
​
​
// ✗ avoid
if (condition)
{
  // ...
}
else
{
  // ...
}

 

comma-spacing

"comma-spacing": ["error", { "before": false, "after": true }]

规定逗号后面必须添加空格。第二个参数用来设置逗号前和逗号后是否添加空格。代码示例如下:

// ✓ ok
var list = [1, 2, 3, 4]
function greet (name, options) { ... }
​
// ✗ avoid
var list = [1,2,3,4]
function greet (name,options) { ... }

 

curly

"curly": ["error", "multi-line"]

规定多行 if 语句的的括号不能省略。第二个参数配置那些场景会报错,可取值“all”、“multi”、“multi-line”、“multi-or-nest”、“consistent”。这里“multi-line”表示多行代码不能省略。代码示例如下:

// ✓ ok
if (options.quiet !== true) console.log('done')
​
// ✓ ok
if (options.quiet !== true) {
  console.log('done')
}
​
// ✗ avoid
if (options.quiet !== true)
  console.log('done')

 

dot-location

"dot-location": ["error", "property"]

规定点号操作符须与属性需在同一行。第二个参数配置点的位置,取值“property”和“object”。“property”表示点与属性同一行,“object”表示点与对象同一行。代码示例如下:

 console.
    log('hello')  // ✗ avoid
​
  console
    .log('hello') // ✓ ok

 

eol-last

"eol-last": "error"

规定文件末尾空一行,以防文件解析错误。

 

func-call-spacing

"func-call-spacing": ["error", "never"]

规定函数调用时标识符与括号间不留间隔。第二个参数取值“never”和“always”,"never"表不留空格,"always"表要留空格。代码示例如下:

console.log ('hello') // ✗ avoid
console.log('hello')  // ✓ ok

 

key-spacing

"key-spacing": ["error", { "beforeColon": false, "afterColon": true }]

规定键值对中冒号与值之间要留空白。第二个参数配置前后是否留白。示例代码如下:

var obj = { 'key' : 'value' }    // ✗ avoid
var obj = { 'key' :'value' }     // ✗ avoid
var obj = { 'key':'value' }      // ✗ avoid
var obj = { 'key': 'value' }     // ✓ ok

 

no-mixed-spaces-and-tabs

"no-mixed-spaces-and-tabs": "error"

规定不能混合使用空格与制表符作为缩进。

 

no-multi-spaces

"no-multi-spaces": "error"

规定除了缩进,不要使用多个空格。代码示例如下:

const id =    1234    // ✗ avoid
const id = 1234       // ✓ ok

no-multiple-empty-lines

"no-multiple-empty-lines": ["error", { "max": 1, "maxEOF": 0 }]

规定不允许有连续多行空行且文件头部不允许空行。第二个参数是一个对象,里面有三个属性。“max”属性表连续空行数,“maxEOF”表文件结尾空行数,“maxBOF”表示文件开头空行数。

 

no-trailing-spaces

"no-trailing-spaces": "error"

规定行末不留空格。

 

no-whitespace-before-property

"no-whitespace-before-property": "error"

规定属性前面不能加空格。

 

object-property-newline

"object-property-newline": ["error", { "allowMultiplePropertiesPerLine": true }]

规定对象属性换行时注意统一代码风格(要么都换行,要么都不换)。第二个参数是一个对象,配置是否允许在一行代码中书写多个属性。代码示例如下:

const user = {
  name: 'Jane Doe', age: 30,
  username: 'jdoe86'            // ✗ avoid
}
​
const user = { name: 'Jane Doe', age: 30, username: 'jdoe86' }    // ✓ ok
​
const user = {
  name: 'Jane Doe',
  age: 30,
  username: 'jdoe86'
}      

 

operator-linebreak

"operator-linebreak": ["error", "after", { "overrides": { "?": "before", ":": "before" } }]

规定对于三元运算符 ?: 与他们所负责的代码处于同一行。第二个参数配置换行符位置,可配“after”、“before”、“none”,分别表示操作符之后可换行,操作符之前可换行,前后都不允许换行。第三个参数配置覆盖第二个参数的配置内容。代码示例如下:

// ✓ ok
var location = env.development ? 'localhost' : 'www.api.com'
​
// ✓ ok
var location = env.development
  ? 'localhost'
  : 'www.api.com'
​
// ✗ avoid
var location = env.development ?
  'localhost' :
  'www.api.com'

 

padded-blocks

"padded-blocks": ["error", { "blocks": "never", "switches": "never", "classes": "never" }]

规则定义代码中不要啊出现多余留白。第二个参数是一个对象,有以下属性配置。“blocks”表代码块,“classes”表类,“switches”表switch语句,取值都为“never”或“always”,表示是否需要留空行。代码示例如下:

if (user) {
                            // ✗ avoid
  const name = getName()
​
}
​
if (user) {
  const name = getName()    // ✓ ok
}

 

rest-spread-spacing

"rest-spread-spacing": ["error", "never"]

规定展开运算符与它的表达式间不要留空白。第二个参数取值“never”和“always”,表是否需要留白。代码示例如下:

fn(... args)    // ✗ avoid
fn(...args)     // ✓ ok

 

semi-spacing

"semi-spacing": ["error", { "before": false, "after": true }]

规定分号前不留空格,后面留一个空格。第二个参数就是配置前后空格开关的。代码示例如下:

for (let i = 0 ;i < items.length ;i++) {...}    // ✗ avoid
for (let i = 0; i < items.length; i++) {...}    // ✓ ok

 

space-before-blocks

"space-before-blocks": ["error", "always"]

规定代码块收尾需留空格。第二个参数配置是否需要空格。代码示例如下:

if (admin){...}     // ✗ avoid
if (admin) {...}    // ✓ ok

 

space-before-function-paren

"space-before-function-paren": ["error", "always"]

规定函数声明时括号与函数名间加空格。第二个参数配置是否需要空格。代码示例如下:

function name (arg) { ... }   // ✓ ok
function name(arg) { ... }    // ✗ avoid
​
run(function () { ... })      // ✓ ok
run(function() { ... })       // ✗ avoid

 

space-in-parens

"space-in-parens": ["error", "never"]

规定圆括号间不留空格。第二个参数配置是否需要空格。代码示例如下:

getName( name )     // ✗ avoid
getName(name)       // ✓ ok

 

space-infix-ops

"space-infix-ops": "error"

规定字符串拼接操作符 (Infix operators) 之间要留空格。代码示例如下:

// ✓ ok
var x = 2
var message = 'hello, ' + name + '!'
​
// ✗ avoid
var x=2
var message = 'hello, '+name+'!'

 

space-unary-ops

"space-unary-ops": ["error", { "words": true, "nonwords": false }]

规定文字格式的一元运算符后跟一个空格。第二个参数有三个属性,“words”表文字格式的运算符(new,delete,typeof,void,yield),"nonwords"表非文字运算符(-,+,--,++,!,!!),"overrides"配置一个对象值,配置具体操作符的空格行为。代码示例如下:

typeof!admin        // ✗ avoid
typeof !admin        // ✓ ok

 

template-curly-spacing

"template-curly-spacing": ["error", "never"]

规定模板字符串中变量前后不加空格。第二个参数配置是否需要空格。代码示例如下:

const message = `Hello, ${ name }`    // ✗ avoid
const message = `Hello, ${name}`      // ✓ ok

 

yield-star-spacing

"yield-star-spacing": ["error", "both"]

规定yield * 中的 * 前后都要有空格。第二个参数取值“before”、“after”、“both”、“neither”,分别表示前留、后留、都留和都不留。代码示例如下:

yield* increment()    // ✗ avoid
yield * increment()   // ✓ ok

 

generator-star-spacing

"generator-star-spacing": ["error", { "before": true, "after": true }]

规定生成器函数*的前后都要留空格。

 

可能出错代码

accessor-pairs

"accessor-pairs": "error"

规定get和set成对出现。代码示例如下:

var person = {
  set name (value) {    // ✗ avoid
    this.name = value
  }
}
​
var person = {
  set name (value) {
    this.name = value
  },
  get name () {         // ✓ ok
    return this.name
  }
}

 

comma-dangle

"comma-dangle": ["error", {
    "arrays": "never",
    "objects": "never",
    "imports": "never",
    "exports": "never",
    "functions": "never"
}]

规定不允许多余的行末逗号。第二个参数可配置属性,“arrays”、“objects”、“imports”、“exports”、“functions”,值分别取“never”或“always”。代码示例如下:

var obj = {
    message: 'hello',   // ✗ avoid
  }

 

comma-style

"comma-style": ["error", "last"]

规定始终将逗号置于行末。第二个参数取值“last”或“first”,分别表示行末或行首。代码示例如下:

 var obj = {
    foo: 'foo'
    ,bar: 'bar'   // ✗ avoid
  }
​
  var obj = {
    foo: 'foo',
    bar: 'bar'   // ✓ ok
  }

 

constructor-super

"constructor-super": "error"

规定子类构造函数中必须调用super,非子类不要调用super。代码示例如下:

class Dog {
  constructor () {
    super()   // ✗ avoid
  }
}
​
class Dog extends Mammal {
  constructor () {
    super()   // ✓ ok
  }
}

 

eqeqeq

"eqeqeq": ["error", "always", { "null": "ignore" }]

规定始终使用 === 替代 ==,null除外。第二个参数配置是否使用 === ,第三个参数配置是否忽略空值判断。示例代码如下:

if (name === 'John')   // ✓ ok
if (name == 'John')    // ✗ avoid
if (name !== 'John')   // ✓ ok
if (name != 'John')    // ✗ avoid

 

handle-callback-err

"handle-callback-err": ["error", "^(err|error)$" ]

规定函数里面的异常信息不要忘记处理。第二个参数配置匹配那些参数的正则表达式。示例代码如下:

// ✓ ok
run(function (err) {
  if (err) throw err
  window.alert('done')
})
​
// ✗ avoid
run(function (err) {
  window.alert('done')
})

 

new-parens

"new-parens": "error"

规定无参的构造函数调用时要带上括号。代码示例如下:

function Animal () {}
var dog = new Animal    // ✗ avoid
var dog = new Animal()  // ✓ ok

 

no-array-constructor

"no-array-constructor": "error"

规定使用数组字面量而不是构造器(由于参数的二义性),但是我们可以在初始化一个固定大小数组时用到他。代码示例如下:

var nums = new Array(1, 2, 3)   // ✗ avoid
var nums = [1, 2, 3]            // ✓ ok

 

no-class-assign

"no-class-assign": "error"

规定避免对类名重新赋值。代码示例如下:

class Dog {}
Dog = 'Fido'    // ✗ avoid

 

no-const-assign

"no-const-assign": "error"

规定避免修改使用 const 声明的变量。代码示例如下:

const score = 100
score = 125       // ✗ avoid

 

no-constant-condition

"no-constant-condition": ["error", { "checkLoops": false }]

规定避免使用常量作为条件表达式的条件(循环语句除外)。第二个参数配置是否检查循环表达式。代码示例如下:

if (false) {    // ✗ avoid
  // ...
}
​
if (x === 0) {  // ✓ ok
  // ...
}
​
while (true) {  // ✓ ok
  // ...
}

 

no-delete-var

"no-delete-var": "error"

规定不要对变量使用 delete 操作。代码示例如下:

var name
delete name     // ✗ avoid

 

no-dupe-args

"no-dupe-args": "error"

规定不要定义重复的函数参数。代码示例如下:

function sum (a, b, a) {  // ✗ avoid
  // ...
}
​
function sum (a, b, c) {  // ✓ ok
  // ...
}

 

no-dupe-class-members

"no-dupe-class-members": "error"

规定类中不要定义重复的属性。代码示例如下:

class Dog {
  bark () {}
  bark () {}    // ✗ avoid
}

 

no-dupe-keys

"no-dupe-keys": "error"

规定对象字面量中不要定义重复的属性。代码示例如下:

var user = {
  name: 'Jane Doe',
  name: 'John Doe'    // ✗ avoid
}

 

no-duplicate-case

"no-duplicate-case": "error"

规定switch 语句中不要定义重复的 case 分支。代码示例如下:

switch (id) {
  case 1:
    // ...
  case 1:     // ✗ avoid
}

 

no-empty-character-class

"no-empty-character-class": "error"

规定正则中不要使用空字符。代码示例如下:

const myRegex = /^abc[]/      // ✗ avoid
const myRegex = /^abc[a-z]/   // ✓ ok

 

no-empty-pattern

"no-empty-pattern": "error"

规定不要解构空值。代码示例如下:

const { a: {} } = foo         // ✗ avoid
const { a: { b } } = foo      // ✓ ok

 

no-ex-assign

"no-ex-assign": "error"

定义catch 中不要对错误重新赋值。代码示例如下:

try {
  // ...
} catch (e) {
  e = 'new value'             // ✗ avoid
}
​
try {
  // ...
} catch (e) {
  const newVal = 'new value'  // ✓ ok
}

 

no-fallthrough

"no-fallthrough": "error"

规定switch一定要使用 break 来将条件分支正常中断。代码示例如下:

switch (filter) {
  case 1:
    doSomething()    // ✗ avoid
  case 2:
    doSomethingElse()
}
​
switch (filter) {
  case 1:
    doSomething()
    break           // ✓ ok
  case 2:
    doSomethingElse()
}
​
switch (filter) {
  case 1:
    doSomething()
    // fallthrough  // ✓ ok
  case 2:
    doSomethingElse()
}

 

no-func-assign

"no-func-assign": "error"

规定避免对声明过的函数重新赋值。代码示例如下:

function myFunc () { }
myFunc = myOtherFunc    // ✗ avoid

 

no-global-assign

"no-global-assign": "error"

规定不要对全局只读对象重新赋值。代码示例如下:

window = {}     // ✗ avoid

 

no-invalid-regexp

"no-invalid-regexp": "error"

规定不要向 RegExp 构造器传入非法的正则表达式。代码示例如下:

RegExp('[a-z')    // ✗ avoid
RegExp('[a-z]')   // ✓ ok

 

no-iterator

"no-iterator": "error"

规定禁止使用 iterator。代码示例如下:

Foo.prototype.__iterator__ = function () {}   // ✗ avoid

 

no-self-assign

"no-self-assign": "error"

规定避免将变量赋值给自己。代码示例如下:

name = name   // ✗ avoid

 

no-self-compare

"no-self-compare": "error"

规定避免将变量与自己进行比较操作。代码示例如下:

if (score === score) {}   // ✗ avoid

 

no-shadow-restricted-names

"no-shadow-restricted-names": "error"

规定禁止随意更改关键字的值。代码示例如下:

let undefined = 'value'     // ✗ avoid

 

no-sparse-arrays

"no-sparse-arrays": "error"

规定禁止使用稀疏数组。代码示例如下:

let fruits = ['apple',, 'orange']       // ✗ avoid

 

no-template-curly-in-string

"no-template-curly-in-string": "error"

规定正确使用 ES6 中的字符串模板。代码示例如下:

const message = 'Hello ${name}'   // ✗ avoid
const message = `Hello ${name}`   // ✓ ok

 

no-throw-literal

"no-throw-literal": "error"

规定用throw 抛错时,抛出 Error 对象而不是字符串。代码示例如下:

throw 'error'               // ✗ avoid
throw new Error('error')    // ✓ ok

 

no-unexpected-multiline

"no-unexpected-multiline": "error"

规定不要使用 (, [, or ` 等作为一行的开始。在没有分号的情况下代码压缩后会导致报错,而坚持这一规范则可避免出错。代码示例如下:

// ✓ ok
;(function () {
  window.alert('ok')
}())
​
// ✗ avoid
(function () {
  window.alert('ok')
}())
​
// ✓ ok
;[1, 2, 3].forEach(bar)
​
// ✗ avoid
[1, 2, 3].forEach(bar)
​
// ✓ ok
;`hello`.indexOf('o')
​
// ✗ avoid
`hello`.indexOf('o')

 

no-unmodified-loop-condition

"no-unmodified-loop-condition": "error"

规定循环语句中注意更新循环变量。代码示例如下:

for (let i = 0; i < items.length; j++) {...}    // ✗ avoid
for (let i = 0; i < items.length; i++) {...}    // ✓ ok

 

no-unreachable

"no-unreachable": "error"

规定return,throw,continue 和 break 后不要再跟代码。代码示例如下:

function doSomething () {
  return true
  console.log('never called')     // ✗ avoid
}

 

no-unsafe-finally

"no-unsafe-finally": "error"

规定finally 代码块中不要再改变程序执行流程。代码示例如下:

try {
  // ...
} catch (e) {
  // ...
} finally {
  return 42     // ✗ avoid
}

 

valid-typeof

"valid-typeof": ["error", { "requireStringLiterals": true }]

规定用合法的字符串跟 typeof 进行比较操作。第二个参数配置是否只和字符串比对。代码示例如下:

typeof name === 'undefimed'     // ✗ avoid
typeof name === 'undefined'     // ✓ ok
typeof bar == Object           // ✗ avoid

 

no-control-regex

"no-control-regex": "error"

规定禁止在正则表达式中使用控制字符。代码示例如下:

var pattern = /\x1f/    // ✗ avoid
var pattern = /\x20/    // ✓ ok

 

no-unused-expressions

"no-unused-expressions": ["error", { "allowShortCircuit": true, "allowTernary": true, "allowTaggedTemplates": true }]

规定禁止无用的表达式。

 

no-use-before-define

"no-use-before-define": ["error", { "functions": false, "classes": false, "variables": false }]

规定未定义前不能使用。

 

 

最佳实践

accessor-pairs

"accessor-pairs": "error"

对象中定义了存值器,一定要定义对应的取值器。代码示例如下:

var person = {
  set name (value) {    // ✗ avoid
    this.name = value
  }
}
​
var person = {
  set name (value) {
    this.name = value
  },
  get name () {         // ✓ ok
    return this.name
  }
}

 

no-caller

"no-caller": "error"

规定避免使用 arguments.callee 和 arguments.caller(不利于代码优化,且高级版本的ES标准会废弃它)。代码示例如下:

function foo (n) {
  if (n <= 0) return
​
  arguments.callee(n - 1)   // ✗ avoid
}
​
function foo (n) {
  if (n <= 0) return
​
  foo(n - 1)
}

 

no-cond-assign

"no-cond-assign": "error"

规定条件语句中赋值语句使用括号包起来。代码示例如下:

// ✓ ok
while ((m = text.match(expr))) {
  // ...
}
​
// ✗ avoid
while (m = text.match(expr)) {
  // ...
}

 

no-debugger

"no-debugger": "error"

规定不要使用 debugger。

 

no-eval

"no-eval": "error"

规定不要使用 eval()。

 

no-extend-native

"no-extend-native": "error"

规定不要扩展原生对象。

 

no-extra-bind

"no-extra-bind": "error"

规定避免多余的函数上下文绑定。代码示例如下:

const name = function () {
  getName()
}.bind(user)    // ✗ avoid
​
const name = function () {
  this.getName()
}.bind(user)    // ✓ ok

 

no-extra-boolean-cast

"no-extra-boolean-cast": "error"

规定避免不必要的布尔转换。代码示例如下:

const result = true
if (!!result) {   // ✗ avoid
  // ...
}
​
const result = true
if (result) {     // ✓ ok
  // ...
}

 

no-extra-parens

"no-extra-parens": ["error", "functions"]

规定不要使用多余的括号包裹函数。第二个参数取值“all”或“functions”,表控制范围。代码示例如下:

const myFunc = (function () { })   // ✗ avoid
const myFunc = function () { }     // ✓ ok

 

no-floating-decimal

"no-floating-decimal": "error"

规定不要省去小数点前面的0(增强可读性)。代码示例如下:

const discount = .5      // ✗ avoid
const discount = 0.5     // ✓ ok

 

no-implied-eval

"no-implied-eval": "error"

规定避免使用隐式的 eval()。代码示例如下:

setTimeout("alert('Hello world')")                   // ✗ avoid
setTimeout(function () { alert('Hello world') })     // ✓ ok

 

no-inner-declarations

"no-inner-declarations": ["error", "functions"]

规定嵌套的代码块中禁止再定义函数。第二个参数配置控制范围,取值“both”(functions+var)、“functions”。代码示例如下:

if (authenticated) {
  function setAuthUser () {}    // ✗ avoid
}

 

no-irregular-whitespace

"no-irregular-whitespace": "error"

规定不要使用非法的空白符。代码示例如下:

function myFunc () /*<NBSP>*/{}   // ✗ avoid

 

no-labels

"no-labels": ["error", { "allowLoop": false, "allowSwitch": false }]

规定不要使用标签语句。第二个参数含两个属性,“allowLoop”配置是否在循环语句中禁用,“allowSwitch”配置是否在switch语句中禁用。代码示例如下:

label:
  while (true) {
    break label     // ✗ avoid
  }

 

no-lone-blocks

"no-lone-blocks": "error"

规定不要书写不必要的嵌套代码块。代码示例如下:

function myFunc () {
  {                   // ✗ avoid
    myOtherFunc()
  }
}
​
function myFunc () {
  myOtherFunc()       // ✓ ok
}

 

no-multi-str

"no-multi-str": "error"

规定不要使用多行字符串。代码示例如下:

const message = 'Hello \
                 world'     // ✗ avoid

 

no-new

"no-new": "error"

规定new 创建对象实例后需要赋值给变量。代码示例如下:

new Character()                     // ✗ avoid
const character = new Character()   // ✓ ok

 

no-new-func

"no-new-func": "error"

规定禁止使用 Function 构造器。代码示例如下:

var sum = new Function('a', 'b', 'return a + b')    // ✗ avoid

 

no-new-object

"no-new-object": "error"

规定禁止使用 Object 构造器,直接声明对象即可。代码示例如下:

let config = new Object()   // ✗ avoid

 

no-new-require

"no-new-require": "error"

规定禁止使用 new require。代码示例如下:

const myModule = new require('my-module')    // ✗ avoid

 

no-new-symbol

"no-new-symbol": "error"

规定禁止使用 Symbol 构造器。代码示例如下:

const foo = new Symbol('foo')   // ✗ avoid

 

no-new-wrappers

"no-new-wrappers": "error"

规定禁止使用原始包装器。代码示例如下:

const message = new String('hello')   // ✗ avoid

 

no-obj-calls

"no-obj-calls": "error"

规定不要将全局对象的属性作为函数调用。代码示例如下:

const math = Math()   // ✗ avoid

 

no-octal

"no-octal": "error"

规定不要使用八进制字面量。代码示例如下:

const num = 042     // ✗ avoid
const num = '042'   // ✓ ok

 

no-octal-escape

"no-octal-escape": "error"

规定字符串字面量中也不要使用八进制转义字符。代码示例如下:

const copyright = 'Copyright \251'  // ✗ avoid

 

no-proto

"no-proto": "error"

规定使用 getPrototypeOf 来替代 proto。代码示例如下:

const foo = obj.__proto__               // ✗ avoid
const foo = Object.getPrototypeOf(obj)  // ✓ ok

 

no-redeclare

"no-redeclare": "error"

规定不要重复声明变量。代码示例如下:

let name = 'John'
let name = 'Jane'     // ✗ avoid
​
let name = 'John'
name = 'Jane'         // ✓ ok

 

no-regex-spaces

"no-regex-spaces": "error"

规定正则中避免使用多个空格。代码示例如下:

const regexp = /test   value/   // ✗ avoid
​
const regexp = /test {3}value/  // ✓ ok
const regexp = /test value/     // ✓ ok

 

no-return-assign

"no-return-assign": ["error", "except-parens"]

规定return 语句中的赋值必需有括号包裹。代码示例如下:

function sum (a, b) {
  return result = a + b     // ✗ avoid
}
​
function sum (a, b) {
  return (result = a + b)   // ✓ ok
}

 

no-sequences

"no-sequences": "error"

规定避免使用逗号操作符。代码示例如下:

if (doSomething(), !!test) {}   // ✗ avoid

 

no-undef-init

"no-undef-init": "error"

规定不要使用 undefined 来初始化变量。代码示例如下:

let name = undefined    // ✗ avoid
​
let name
name = 'value'          // ✓ ok

 

no-unneeded-ternary

"no-unneeded-ternary": ["error", { "defaultAssignment": false }]

规定如果有更好的实现,尽量不要使用三元表达式。代码示例如下:

let score = val ? val : 0     // ✗ avoid
let score = val || 0          // ✓ ok

 

no-unsafe-negation

"no-unsafe-negation": "error"

规定关系运算符的左值不要做取反操作。代码示例如下:

if (!key in obj) {}       // ✗ avoid

 

no-unused-vars

"no-unused-vars": ["error", { "vars": "all", "args": "none", "ignoreRestSiblings": true }]

规定不要定义未使用的变量。代码示例如下:

function myFunction () {
  var result = something()   // ✗ avoid
}

 

no-useless-call

"no-useless-call": "error"

规定避免不必要的 .call() 和 .apply()。代码示例如下:

sum.call(null, 1, 2, 3)   // ✗ avoid

 

no-useless-computed-key

"no-useless-computed-key": "error"

规定避免使用不必要的计算值作对象属性。代码示例如下:

const user = { ['name']: 'John Doe' }   // ✗ avoid
const user = { name: 'John Doe' }       // ✓ ok

 

no-useless-constructor

"no-useless-constructor": "error"

规定禁止多余的构造器(ES2015会自动生成一个简单构造器)。代码示例如下:

class Car {
  constructor () {      // ✗ avoid
  }
}

 

no-useless-escape

"no-useless-escape": "error"

规定禁止不必要的转义。代码示例如下:

let message = 'Hell\o'  // ✗ avoid

 

no-useless-rename

"no-useless-rename": "error"

规定import, export 和解构操作中,禁止赋值到同名变量。代码示例如下:

import { config as config } from './config'     // ✗ avoid
import { config } from './config'               // ✓ ok

 

no-with

"no-with": "error"

规定禁止使用 with。代码示例如下:

with (val) {...}    // ✗ avoid

 

one-var

"one-var": ["error", { "initialized": "never" }]

规定每个 var 关键字单独声明一个变量。代码示例如下:

// ✓ ok
var silent = true
var verbose = true
​
// ✗ avoid
var silent = true, verbose = true
​
// ✗ avoid
var silent = true,
    verbose = true

 

quotes

"quotes": ["error", "single", { "avoidEscape": true, "allowTemplateLiterals": true }]

规定除需要转义的情况外,字符串统一使用单引号。第二个参数取值“single”、“double”,分别表示单引号和双引号。第三个参数配置是否允许嵌套和是否允许字符串模板。代码示例如下:

console.log('hello there')
$("<div class='box'>")

 

semi

"semi": ["error", "always"]

规定必须添加分号。第二个参数配置开关取值“never”、“always”。代码示例如下:

window.alert('hi')   // ✓ ok
window.alert('hi');  // ✗ avoid

 

use-isnan

"use-isnan": "error"

规定检查 NaN 的正确姿势是使用 isNaN()。

 

wrap-iife

"wrap-iife": ["error", "any", { "functionPrototypeMethods": true }]

规定自调用匿名函数 (IIFEs) 使用括号包裹。代码示例如下:

const getName = function () { }()     // ✗ avoid
​
const getName = (function () { }())   // ✓ ok
const getName = (function () { })()   // ✓ ok

 

arrow-spacing

"arrow-spacing": ["error", { "before": true, "after": true }]

规定箭头函数必须有前后括号。

 

命名

new-cap

"new-cap": ["error", { "newIsCap": true, "capIsNew": false }]

规定构造函数要以大写字母开头。第二个参数配置细则,"newIsCap"配置只要是new关键字初始化的函数,首字母必须大写;“capIsNew”配置是否允许大写字母开头的函数不使用new关键字初始化。代码示例如下:

function animal () {}
var dog = new animal()    // ✗ avoid
​
function Animal () {}
var dog = new Animal()    // ✓ ok
​
function Animal () {}
var dog = Animal()    // ✓ ok

 

camelcase

"camelcase": ["error", { "properties": "never" }]

规定变量和函数使用驼峰命名法。第二个参数配置对象属性是否也要遵循驼峰命名法。示例代码如下:

 function my_function () { }    // ✗ avoid
  function myFunction () { }     // ✓ ok
​
  var my_var = 'hello'           // ✗ avoid
  var myVar = 'hello'            // ✓ ok

 

Angular规则

angular/no-private-call

"angular/no-private-call":["error"]

规定使用直接使用angular中带$$符号的成员,他们都是私有成员。

 

angular/di-unused

"angular/di-unused":["error"]

规定不要注入不使用的服务。

 

angular/empty-controller

"angular/empty-controller":["error"]

规定控制器不能为空。

 

angular/no-run-logic

"angular/no-run-logic":["error"]

规定控制器中只有调用代码,没有声明逻辑。

 

angular/no-cookiestore

"angular/no-cookiestore":["error"]

规定取代,而使用​cookie来操作缓存。

 

angular/no-directive-replace

"angular/no-directive-replace":["error"]

规定自定义指令中不能使用replace属性。

 

angular/no-http-callback

"angular/no-http-callback":["error"]

规定不要直接使用 $http 的回调函数,应该使用promise来操作回调。

 

angular/controller-name

"angular/controller-name":["error","/[a-z].*Ctrl/"]

规定控制器命名规则,以小写字母开头以“Ctrl”结尾。

 

angular/di

"angular/di":["error","array"]

规定依赖注入规则,必须有数组列表并且参数与之一致。

 

angular/function-type

"angular/function-type":["error","anonymous"]

规定为angular组件指定一致的函数风格——匿名函数。

 

angular/document-service

"angular/document-service":["off"]

规定使用$document。

 

angular/interval-service

"angular/interval-service":["off"]

规定使用$interval。

 

angular/log

"angular/log":["off"]

规定使用$log。

 

angular/timeout-service

"angular/timeout-service":["off"]

规定使用$timeout。

 

angular/window-service

"angular/window-service":["off"]

规定使用$window。

 

 

参考文章:

https://github.com/standard/standard/blob/master/docs/RULES-zhcn.md#javascript-standard-style

http://eslint.cn/

 

欢迎关注我的微信公众号:

展开阅读全文
打赏
2
6 收藏
分享
加载中
打赏
0 评论
6 收藏
2
分享
返回顶部
顶部