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;