Eslint規則字典

Eslint(二):規則字典

字數:6190javascript

閱讀時間:30分鐘java


Standard規範+Angular規範集合git

代碼格式

indent

"indent": ["error", 4]

規定使用幾個空格進行縮進。第二個參數表示空格的個數,默認是2個,咱們這個設置的是四格。github


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」。代碼示例以下:express

// ✓ ok
if (condition) {
  // ...
} else {
  // ...
}


// ✗ avoid
if (condition)
{
  // ...
}
else
{
  // ...
}


comma-spacing

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

規定逗號後面必須添加空格。第二個參數用來設置逗號前和逗號後是否添加空格。代碼示例以下:api

// ✓ 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」表示點與對象同一行。代碼示例以下:promise

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"]

規定取代$cookiesStore,而使用$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/


歡迎關注個人微信公衆號:

相關文章
相關標籤/搜索