1.比较时尽量使用全等于

使用 === 和 !== 优先于 == 和 !=。

2. 对于布尔值使用简写,但对于字符串和数字使用显式比较。

反例**

  1. if (isValid === true) {
  2. // ...
  3. }
  4. if (name) {
  5. // ...
  6. }
  7. if (collection.length) {
  8. // ...
  9. }

正例

  1. if (isValid) {
  2. // ...
  3. }
  4. if (name !== '') {
  5. // ...
  6. }
  7. if (collection.length > 0) {
  8. // ...
  9. }

3. 在 case 和 default 子句中,使用大括号来创建包含词法声明的语句块

例如 let, const, function, 和 class.

反例

  1. switch (foo) {
  2. case 1:
  3. let x = 1;
  4. break;
  5. case 2:
  6. const y = 2;
  7. break;
  8. case 3:
  9. function f() {
  10. // ...
  11. }
  12. break;
  13. default:
  14. class C {}
  15. }

正例

  1. switch (foo) {
  2. case 1: {
  3. let x = 1;
  4. break;
  5. }
  6. case 2: {
  7. const y = 2;
  8. break;
  9. }
  10. case 3: {
  11. function f() {
  12. // ...
  13. }
  14. break;
  15. }
  16. case 4:
  17. bar();
  18. break;
  19. default: {
  20. class C {}
  21. }
  22. }

4. 三元表达式不应该嵌套,通常写成单行表达式。

反例

  1. const foo = maybe1 > maybe2
  2. ? "bar"
  3. : value1 > value2 ? "baz" : null;

正例

  1. // 拆分成2个分离的三元表达式
  2. const maybeNull = value1 > value2 ? 'baz' : null;
  3. const foo = maybe1 > maybe2 ? 'bar' : maybeNull;

5. 避免不必要的三元表达式语句。

反例

  1. const foo = a ? a : b;
  2. const bar = c ? true : false;
  3. const baz = c ? false : true;

正例

  1. const foo = a || b;
  2. const bar = !!c;
  3. const baz = !c;

6. 当运算符混合在一个语句中时,请将其放在括号内。混合算术运算符时,不要将 * 和 % 与 + , -,,/ 混合在一起。

这可以提高可读性,并清晰展现开发者的意图。

反例

  1. const foo = a && b < 0 || c > 0 || d + 1 === 0;
  2. const bar = a ** b - 5 % d;
  3. if (a || b && c) {
  4. return d;
  5. }

正例

  1. const foo = (a && b < 0) || c > 0 || (d + 1 === 0);
  2. const bar = (a ** b) - (5 % d);
  3. if ((a || b) && c) {
  4. return d;
  5. }
  6. const bar = a + b / c * d;