LeeJim/better-fe

JavaScript代码规范(语法篇)

Opened this issue · 0 comments

(no-cond-assign) 禁止在条件表达式里出现赋值运算符:

// Bad
if (x = 0) {
}

// Good
if (x === 0) {
}

(no-console) 尽量不要在生产上使用console控制台输出:

// Bad
console.log('hello world')

(no-debugger) 禁止使用debugger

// Bad
function isTruthy(x) {
    debugger;
    return x;
}

// Good
function isTruthy(x) {
    return x; // set a breakpoint at this line
}

(no-dupe-args) 禁止使用同样的函数参数

// Bad
function foo(a, b, a) {
    console.log("value of the second a:", a);
}

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

(no-dupe-keys) 禁止在对象里使用同样的key值

// Bad
var foo = {
    bar: "baz",
    bar: "qux"
};


// Good
var foo = {
    bar: "baz",
    quxx: "qux"
};

(no-duplicate-case) 禁止在switch语句里使用相同的case

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

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

(no-empty) 禁止出现空的块级作用域,但是可以只有注释:

// Bad
if (foo) {
}

while (foo) {
}

try {
    doSomething();
}
catch(ex) {

}
finally {

}

// Good
if (foo) {
  // empty
}

while (foo) {
  /* empty */
}

(no-inner-declarations) 禁止在块级作用域内部使用var声明以及函数申明

// Bad
if (foo) {
  var bar1;
  
  function add(){}
}

// Good
if (foo) {
  let bar1;
  
  var add = function(){}
}

(curly) 强制使用大括号,就算只有一行代码:

// Bad
if (foo) foo++;

while (bar)
    baz();

// Good
if (foo) {
    foo++;
}

while (bar) {
    baz();
}

(default-case) switch语句正确使用default:

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

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

  default:
    /* code */
    break;
}


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

  // no default
}

(dot-notation) 尽量使用点.来读对象的value值

// Bad
var x = foo["bar"];

// Good
var x = foo.bar;

var x = foo[bar];

(eqeqeq) 使用全等===代替==

// Bad
a == b
foo == true
bananas != 1

// Good
a === b
foo === true
bananas !== 1

(no-loop-func) 禁止在循环语句里定义函数:

// Bad
while(i) {
  var a = function() { return i; };
  a();
}

// Good
var a = function() {};

while (i) {
  a();
}

(no-multi-str) 禁止字符串跨行

// Bad
var x = "Line 1 \
         Line 2";

// Good
var x = "Line 1\n" +
        "Line 2";