1.比较时尽量使用全等于
使用 === 和 !== 优先于 == 和 !=。
2. 对于布尔值使用简写,但对于字符串和数字使用显式比较。
反例**
if (isValid === true) {// ...}if (name) {// ...}if (collection.length) {// ...}
正例
if (isValid) {// ...}if (name !== '') {// ...}if (collection.length > 0) {// ...}
3. 在 case 和 default 子句中,使用大括号来创建包含词法声明的语句块
例如 let, const, function, 和 class.
反例
switch (foo) {case 1:let x = 1;break;case 2:const y = 2;break;case 3:function f() {// ...}break;default:class C {}}
正例
switch (foo) {case 1: {let x = 1;break;}case 2: {const y = 2;break;}case 3: {function f() {// ...}break;}case 4:bar();break;default: {class C {}}}
4. 三元表达式不应该嵌套,通常写成单行表达式。
反例
const foo = maybe1 > maybe2? "bar": value1 > value2 ? "baz" : null;
正例
// 拆分成2个分离的三元表达式const maybeNull = value1 > value2 ? 'baz' : null;const foo = maybe1 > maybe2 ? 'bar' : maybeNull;
5. 避免不必要的三元表达式语句。
反例
const foo = a ? a : b;const bar = c ? true : false;const baz = c ? false : true;
正例
const foo = a || b;const bar = !!c;const baz = !c;
6. 当运算符混合在一个语句中时,请将其放在括号内。混合算术运算符时,不要将 * 和 % 与 + , -,,/ 混合在一起。
这可以提高可读性,并清晰展现开发者的意图。
反例
const foo = a && b < 0 || c > 0 || d + 1 === 0;const bar = a ** b - 5 % d;if (a || b && c) {return d;}
正例
const foo = (a && b < 0) || c > 0 || (d + 1 === 0);const bar = (a ** b) - (5 % d);if ((a || b) && c) {return d;}const bar = a + b / c * d;
