eslint代码规范配置

    技术2022-07-11  81

    要求或禁止使用分号代替 ASI (semi) 命令行中的 --fix 选项可以自动修复一些该规则报告的问题。

    该规则强制使用一致的分号。

    semi: [“error”, “always”]; 复制代码 等级 : “error” 选项 “always”: (默认) 要求在语句末尾使用分号

    默认选项 “always” 的 错误 代码示例: /eslint semi: [“error”, “always”]/

    var name = “ESLint”;

    object.method = function () { // … }; 复制代码默认选项 “always” 的 正确 代码示例: /eslint semi: “error”/

    var name = “ESLint”;

    object.method = function () { // … }; 复制代码禁止未使用过的变量 (no-unused-vars)

    此规则旨在消除未使用过的变量,方法和方法中的参数名,当发现这些存在,发出警告。 符合下面条件的变量被认为是可以使用的:

    作为回调函数 被读取 (var y = x) 传入函数中作为 argument 对象(doSomething(x)) 在传入到另一个函数的函数中被读取

    一个变量仅仅是被赋值为 (var x = 5) 或者是被声明过,则认为它是没被考虑使用。

    ‘no-unused-vars’: [ ‘warn’, { args: ‘none’, ignoreRestSiblings: true, }, ] 复制代码 等级 : “warn” 选项 “args”: none - 不检查参数 选项 “ignoreRestSiblings”: 选项是个布尔类型 (默认: false)。使用 Rest 属性 可能会“省略”对象中的属性,但是默认情况下,其兄弟属性被标记为 “unused”。使用该选项可以使 rest 属性的兄弟属性被忽略。

    选项 { “args”: “none” } 的 正确 代码示例: /eslint no-unused-vars: [“error”, { “args”: “none” }]/

    (function (foo, bar, baz) { return bar; })(); 复制代码选项 { “ignoreRestSiblings”: true } 的 正确 代码示例: /eslint no-unused-vars: [“error”, { “ignoreRestSiblings”: true }]/ // ‘type’ is ignored because it has a rest property sibling. var { type, …coords } = data; 复制代码禁用 console (no-console)

    该规则禁止调用 console 对象的方法。

    ‘no-console’: ‘off’ 复制代码 选项 “off”: 关闭禁用

    强制数组方法的回调函数中有 return 语句 (array-callback-return)

    该规则发现以下方法的回调函数,然后检查 return 语句的使用。

    Array.from Array.prototype.every Array.prototype.filter Array.prototype.find Array.prototype.findIndex Array.prototype.map Array.prototype.reduce Array.prototype.reduceRight Array.prototype.some Array.prototype.sort 以上类型的数据。

    ‘array-callback-return’: ‘off’ 复制代码 选项 “off”: 关闭禁用

    要求 Switch 语句中有 Default 分支 (default-case)

    此规则的目的是在 switch 语句中强制声明 default 分支。或者也可以在最后一个 case 分支下,使用 // no default 来表明此处不需要 default 分支。注释可以任何形式出现,比如 // No Default。

    ‘default-case’: [‘warn’, { commentPattern: '^no defaultKaTeX parse error: Expected 'EOF', got '}' at position 3: ' }̲] 复制代码 等级 : "wa…/i 注释匹配模式 此规则的目的是在 switch 语句中强制声明 default 分支。或者也可以在最后一个 case 分支下,使用 // no default 来表明此处不需要 default 分支。注释可以任何形式出现,比如 // No Default。

    错误 代码示例: /eslint default-case: “error”/

    switch (a) { case 1: /* code */ break; } 复制代码正确 代码示例: /eslint default-case: “error”/

    switch (a) { case 1: /* code */ break;

    default: /* code */ break; }

    switch (a) { case 1: /* code */ break;

    // no default }

    switch (a) { case 1: /* code */ break;

    // No Default } 复制代码强制在点号之前或之后换行 (dot-location) 命令行中的 --fix 选项可以自动修复一些该规则报告的问题。

    该规则旨在强制成员表达式中强制换行的一致性。防止既在点号操作之前也在之后使用换行符。

    ‘dot-location’: [‘warn’, ‘property’] 复制代码 等级 : “warn” 选项 “property”: 表达式中的点号操作符应该和属性在同一行。

    选项 “property” 的 错误 代码示例: /eslint dot-location: [“error”, “property”]/ var foo = object.property; 复制代码选项 “property” 的 正确 代码示例: /eslint dot-location: [“error”, “property”]/

    var foo = object.property; var bar = object.property; 复制代码要求使用 === 和 !== (eqeqeq) 命令行中的 --fix 选项可以自动修复一些该规则报告的问题。

    该规则旨在消除非类型安全的相等操作符。

    eqeqeq: [“warn”, “allow-null”]; 复制代码 等级 : “warn” 选项 “allow-null”: 使用 “always”,然后传一个 “null” 选项,属性值为 “ignore” 代替。这将告诉 eslint 除了与 null 字面量进行比较时,总是强制使用绝对相等。

    要求调用无参构造函数时带括号 (new-parens) 命令行中的 --fix 选项可以自动修复一些该规则报告的问题。

    该规则目的在于,当通过 new 关键字调用构造函数时,要求使用圆括号,以此提高代码的清晰度。

    ‘new-parens’: ‘warn’ 复制代码 等级 : “warn”

    错误 代码示例: /eslint new-parens: “error”/

    var person = new Person(); var person = new Person(); 复制代码正确 代码示例: /eslint new-parens: “error”/

    var person = new Person(); var person = new Person(); 复制代码禁止使用 Array 构造函数 (no-array-constructor)

    该规则禁止使用 Array 构造函数。

    ‘no-array-constructor’: ‘warn’ 复制代码 等级 : “warn”

    错误 代码示例: /eslint no-array-constructor: “error”/

    Array(0, 1, 2); /eslint no-array-constructor: “error”/

    new Array(0, 1, 2); 复制代码正确 代码示例: /eslint no-array-constructor: “error”/

    Array(500); /eslint no-array-constructor: “error”/

    new Array(someOtherArray.length); 复制代码禁用 caller 或 callee (no-caller)

    此规则目的在于阻止使用已弃用的代码和次优的代码,而且禁止使用 arguments.caller 和 arguments.callee。因此,当 arguments.caller 和 arguments.callee 被使用时,该规则将会发出警告。

    ‘no-caller’: ‘warn’ 复制代码 等级 : “warn”

    错误 代码示例 /eslint no-caller: “error”/

    function foo(n) { if (n <= 0) { return; }

    arguments.callee(n - 1); }

    [1, 2, 3, 4, 5].map(function (n) { return !(n > 1) ? 1 : arguments.callee(n - 1) * n; }); 复制代码正确 代码示例: /eslint no-caller: “error”/

    function foo(n) { if (n <= 0) { return; }

    foo(n - 1); }

    [1, 2, 3, 4, 5].map(function factorial(n) { return !(n > 1) ? 1 : factorial(n - 1) * n; }); 复制代码禁止在条件语句中出现赋值操作符(no-cond-assign)

    该规则禁止在 if、for、while 和 do…while 语句中出现模棱两可的赋值操作符。

    ‘no-cond-assign’: [‘warn’, ‘always’] 复制代码 等级 : “warn” 选项 “always”: 禁止条件语句中出现赋值语句。

    选项 “always” 的 错误 代码示例: /eslint no-cond-assign: [“error”, “always”]/

    // Unintentional assignment var x; if ((x = 0)) { var b = 1; }

    // Practical example that is similar to an error function setHeight(someNode) { “use strict”; do { someNode.height = “100px”; } while ((someNode = someNode.parentNode)); }

    // Practical example that wraps the assignment in parentheses function setHeight(someNode) { “use strict”; do { someNode.height = “100px”; } while ((someNode = someNode.parentNode)); }

    // Practical example that wraps the assignment and tests for ‘null’ function setHeight(someNode) { “use strict”; do { someNode.height = “100px”; } while ((someNode = someNode.parentNode) !== null); } 复制代码选项 “always” 的 正确 代码示例: /eslint no-cond-assign: [“error”, “always”]/

    // Assignment replaced by comparison var x; if (x === 0) { var b = 1; } 复制代码不允许改变用 const 声明的变量 (no-const-assign)

    该规则旨在标记修改用 const 关键字声明的变量。

    ‘no-const-assign’: ‘warn’ 复制代码 等级 : “warn”

    错误 代码示例: /eslint no-const-assign: “error”/ /eslint-env es6/

    const a = 0; a = 1; /eslint no-const-assign: “error”/ /eslint-env es6/

    const a = 0; a += 1; /eslint no-const-assign: “error”/ /eslint-env es6/

    const a = 0; ++a; 复制代码正确 代码示例: /eslint no-const-assign: “error”/ /eslint-env es6/

    const a = 0; console.log(a); /eslint no-const-assign: “error”/ /eslint-env es6/

    for (const a in [1, 2, 3]) { // a is re-defined (not modified) on each loop step. console.log(a); } /eslint no-const-assign: “error”/ /eslint-env es6/

    for (const a of [1, 2, 3]) { // a is re-defined (not modified) on each loop step. console.log(a); } 复制代码禁止在正则表达式中使用控制字符(no-control-regex)

    该规则禁止在正则表达式中出现控制字符。

    ‘no-control-regex’: ‘warn’ 复制代码 等级 : “warn”

    错误 代码示例: /eslint no-control-regex: “error”/

    var pattern1 = /\x1f/; var pattern2 = new RegExp("\x1f"); 复制代码正确 代码示例: /eslint no-control-regex: “error”/

    var pattern1 = /\x20/; var pattern2 = new RegExp("\x20"); 复制代码禁止删除变量 (no-delete-var)

    该规则禁止对变量使用 delete 操作符。

    如果 ESLint 是在严格模式下解析代码,解析器(而不是该规则)会报告错误。

    ‘no-delete-var’: ‘warn’ 复制代码 等级 : “warn”

    错误 代码示例: /eslint no-delete-var: “error”/

    var x; delete x; 复制代码禁止在 function 定义中出现重复的参数 (no-dupe-args)

    该规则禁止在函数定义或表达中出现重名参数。该规则并不适用于箭头函数或类方法,因为解析器会报告这样的错误。

    如果 ESLint 在严格模式下解析代码,解析器(不是该规则)将报告这样的错误。

    ‘no-dupe-args’: ‘warn’ 复制代码 等级 : “warn”

    错误 代码示例: /eslint no-dupe-args: “error”/

    function foo(a, b, a) { console.log(“value of the second a:”, a); }

    var bar = function (a, b, a) { console.log(“value of the second a:”, a); }; 复制代码正确 代码示例: /eslint no-dupe-args: “error”/

    function foo(a, b, c) { console.log(a, b, c); }

    var bar = function (a, b, c) { console.log(a, b, c); }; 复制代码不允许类成员中有重复的名称 (no-dupe-class-members)

    该规则旨在标记类成员中重复名称的使用。

    ‘no-dupe-class-members’: ‘warn’ 复制代码 等级 : “warn”

    错误 代码示例: /eslint no-dupe-class-members: “error”/ /eslint-env es6/

    class Foo { bar() {} bar() {} }

    class Foo { bar() {} get bar() {} }

    class Foo { static bar() {} static bar() {} } 复制代码正确 代码示例: /eslint no-dupe-class-members: “error”/ /eslint-env es6/

    class Foo { bar() {} qux() {} }

    class Foo { get bar() {} set bar(value) {} }

    class Foo { static bar() {} bar() {} } 复制代码禁止在对象字面量中出现重复的键 (no-dupe-keys)

    该规则禁止在对象字面量中出现重复的键。

    ‘no-dupe-keys’: ‘warn’ 复制代码 等级 : “warn”

    错误 代码示例: /eslint no-dupe-keys: “error”/

    var foo = { bar: “baz”, bar: “qux”, };

    var foo = { bar: “baz”, bar: “qux”, };

    var foo = { 0x1: “baz”, 1: “qux”, }; 复制代码正确 代码示例: /eslint no-dupe-keys: “error”/

    var foo = { bar: “baz”, quxx: “qux”, }; 复制代码禁止重复 case 标签(no-duplicate-case)

    该规则禁止在 switch 语句中的 case 子句中出现重复的测试表达式。

    ‘no-duplicate-case’: ‘warn’ 复制代码 等级 : “warn”

    错误 代码示例: /eslint no-duplicate-case: “error”/

    var a = 1, one = 1;

    switch (a) { case 1: break; case 2: break; case 1: // duplicate test expression break; default: break; }

    switch (a) { case one: break; case 2: break; case one: // duplicate test expression break; default: break; }

    switch (a) { case “1”: break; case “2”: break; case “1”: // duplicate test expression break; default: break; } 复制代码正确 代码示例: /eslint no-duplicate-case: “error”/

    var a = 1, one = 1;

    switch (a) { case 1: break; case 2: break; case 3: break; default: break; }

    switch (a) { case one: break; case 2: break; case 3: break; default: break; }

    switch (a) { case “1”: break; case “2”: break; case “3”: break; default: break; } 复制代码禁止在正则表达式中出现空字符集 (no-empty-character-class)

    该规则禁止在正则表达式中出现空字符集。

    ‘no-empty-character-class’: ‘warn’ 复制代码 等级 : “warn”

    错误 代码示例: /eslint no-empty-character-class: “error”/

    /^abc[]/.test(“abcdefg”); // false “abcdefg”.match(/^abc[]/); // null 复制代码正确 代码示例: /eslint no-empty-character-class: “error”/

    /^abc/.test(“abcdefg”); // true “abcdefg”.match(/^abc/); // [“abc”]

    /^abc[a-z]/.test(“abcdefg”); // true “abcdefg”.match(/^abc[a-z]/); // [“abcd”] 复制代码禁止使用空解构模式 (no-empty-pattern)

    此规则目的在于标记出在解构对象和数组中的任何的空模式,每当遇到一个这样的空模式,该规则就会报告一个问题。

    ‘no-empty-pattern’: ‘warn’ 复制代码 等级 : “warn”

    错误 代码示例: /eslint no-empty-pattern: “error”/

    var {} = foo; var [] = foo; var { a: {}, } = foo; var { a: [], } = foo; function foo({}) {} function foo([]) {} function foo({ a: {} }) {} function foo({ a: [] }) {} 复制代码正确 代码示例: /eslint no-empty-pattern: “error”/

    var { a = {} } = foo; var { a = [] } = foo; function foo({ a = {} }) {} function foo({ a = [] }) {} 复制代码禁用 eval()(no-eval)

    此规则目的在于通过禁止使用 eval() 函数来避免潜在地危险、不必要的和运行效率低下的代码。因此,当时使用 eval() 函数时,该规则将发出警告。

    ‘no-eval’: ‘warn’ 复制代码 等级 : “warn”

    错误 代码示例: /eslint no-eval: “error”/

    var obj = { x: “foo” }, key = “x”, value = eval(“obj.” + key);

    (0, eval)(“var a = 0”);

    var foo = eval; foo(“var a = 0”);

    // This this is the global object. this.eval(“var a = 0”); 复制代码正确 代码示例: /eslint no-eval: “error”/ /eslint-env es6/

    var obj = { x: “foo” }, key = “x”, value = obj[key];

    class A { foo() { // This is a user-defined method. this.eval(“var a = 0”); }

    eval() {} } 复制代码禁止对 catch 子句中的异常重新赋值 (no-ex-assign)

    该规则禁止对 catch 子句中的异常重新赋值。

    ‘no-ex-assign’: ‘warn’ 复制代码 等级 : “warn”

    错误 代码示例: /eslint no-ex-assign: “error”/

    try { // code } catch (e) { e = 10; } 复制代码正确 代码示例: /eslint no-ex-assign: “error”/

    try { // code } catch (e) { var foo = 10; } 复制代码禁止扩展原生对象 (no-extend-native)

    禁止直接修改内建对象的属性。

    ‘no-extend-native’: ‘warn’ 复制代码 等级 : “warn”

    错误 代码示例: /eslint no-extend-native: “error”/

    Object.prototype.a = “a”; Object.defineProperty(Array.prototype, “times”, { value: 999 }); 复制代码禁止不必要的函数绑定 (no-extra-bind) 命令行中的 --fix 选项可以自动修复一些该规则报告的问题。

    此规则目的在于避免不必要的 bind() 使用,并且当立即执行的函数表达式 (IIFE) 使用 bind(),但是没有一个合适的 this 值时,该规则会发出警告。此规则不会标记有函数参数绑定的 bind() 的使用情况。

    注意:箭头函数不能通过使用 bind() 设置它们的自己 this 值。此规则把所有使用 bind() 的箭头函数标记为是有问题的。

    ‘no-extra-bind’: ‘warn’ 复制代码 等级 : “warn”

    错误 代码示例: /eslint no-extra-bind: “error”/ /eslint-env es6/

    var x = function () { foo(); }.bind(bar);

    var x = (() => { foo(); }).bind(bar);

    var x = (() => { this.foo(); }).bind(bar);

    var x = function () { (function () { this.foo(); })(); }.bind(bar);

    var x = function () { function foo() { this.bar(); } }.bind(baz); 复制代码正确 代码示例: /eslint no-extra-bind: “error”/

    var x = function () { this.foo(); }.bind(bar);

    var x = function (a) { return a + 1; }.bind(foo, bar); 复制代码禁用不必要的标签 (no-extra-label) 命令行中的 --fix 选项可以自动修复一些该规则报告的问题。

    该规则旨在消除不必要的标签。

    ‘no-extra-label’: ‘warn’ 复制代码 等级 : “warn”

    错误 代码示例: /eslint no-extra-label: “error”/

    A: while (a) { break A; }

    B: for (let i = 0; i < 10; ++i) { break B; }

    C: switch (a) { case 0: break C; } 复制代码正确 代码示例: /eslint no-extra-label: “error”/

    while (a) { break; }

    for (let i = 0; i < 10; ++i) { break; }

    switch (a) { case 0: break; }

    A: { break A; }

    B: while (a) { while (b) { break B; } }

    C: switch (a) { case 0: while (b) { break C; } break; } 复制代码禁止 case 语句落空 (no-fallthrough)

    该规则旨在消除非故意 case 落空行为。因此,它会标记处没有使用注释标明的落空情况。

    ‘no-fallthrough’: ‘warn’ 复制代码 等级 : “warn”

    错误 代码示例: /eslint no-fallthrough: “error”/

    switch (foo) { case 1: doSomething();

    case 2: doSomething(); } 复制代码正确 代码示例: /eslint no-fallthrough: “error”/

    switch (foo) { case 1: doSomething(); break;

    case 2: doSomething(); }

    function bar(foo) { switch (foo) { case 1: doSomething(); return;

    case 2: doSomething();

    } }

    switch (foo) { case 1: doSomething(); throw new Error(“Boo!”);

    case 2: doSomething(); }

    switch (foo) { case 1: case 2: doSomething(); }

    switch (foo) { case 1: doSomething(); // falls through

    case 2: doSomething(); } 复制代码禁止对 function 声明重新赋值 (no-func-assign)

    该规则禁止对 function 声明重新赋值。

    ‘no-func-assign’: ‘warn’ 复制代码 等级 : “warn”

    错误 代码示例: /eslint no-func-assign: “error”/

    function foo() {} foo = bar;

    function foo() { foo = bar; } 复制代码正确 代码示例: /eslint no-func-assign: “error”/

    var foo = function () {}; foo = bar;

    function foo(foo) { // foo is shadowed. foo = bar; }

    function foo() { var foo = bar; // foo is shadowed. } 复制代码禁用隐式的 eval() (no-implied-eval)

    此规则目的在于消除使用 setTimeout()、setInterval() 或 execScript() 时隐式的 eval()。因此,当它们中的任何一个使用字符串作为第一个参数时,该规则将发出警告。

    ‘no-implied-eval’: ‘warn’ 复制代码 等级 : “warn”

    错误 代码示例: /eslint no-implied-eval: “error”/

    setTimeout(“alert(‘Hi!’);”, 100);

    setInterval(“alert(‘Hi!’);”, 100);

    execScript(“alert(‘Hi!’)”);

    window.setTimeout(“count = 5”, 10);

    window.setInterval(“foo = bar”, 10); 复制代码正确 代码示例: /eslint no-implied-eval: “error”/

    setTimeout(function () { alert(“Hi!”); }, 100);

    setInterval(function () { alert(“Hi!”); }, 100); 复制代码禁止在 RegExp 构造函数中出现无效的正则表达式 (no-invalid-regexp)

    该规则禁止在 RegExp 构造函数中出现无效的正则表达式。

    ‘no-invalid-regexp’: ‘warn’ 复制代码 等级 : “warn”

    错误 代码示例: /eslint no-invalid-regexp: “error”/

    RegExp("[");

    RegExp(".", “z”);

    new RegExp("\"); 复制代码正确 代码示例: /eslint no-invalid-regexp: “error”/

    RegExp(".");

    new RegExp();

    this.RegExp("[");

    Processed: 0.010, SQL: 9