1.简写对象方法
const atom = {
addValue(value) {
return atom.value + value;
},
};
2.简写对象属性
const lukeSkywalker = 'Luke Skywalker';
const obj = {
lukeSkywalker,
};
3.能不用var尽量不用var
4.不要直接调用Object.prototype方法(因为怕被自身带有的函数所覆盖)
// 更好
const has = Object.prototype.hasOwnProperty; // 在模块范围内缓存一次查找
5.类转为数组时使用Array.from
const arrLike = { 0: 'foo', 1: 'bar', 2: 'baz', length: 3 };
const arr = Array.from(arrLike);
6.如果数组有多行,请在打开数组后和关闭数组括号之前使用换行符。
const arr = [[0, 1], [2, 3], [4, 5]];
const objectInArray = [
{
id: 1,
},
{
id: 2,
},
];
const numberInArray = [
1,
2,
];
7.使用解构,减少临时变量开销
// 更好的
function getFullName({ firstName, lastName }) {
return `${firstName} ${lastName}`;
}
const arr = [1, 2, 3, 4];
// 好的
const [first, second] = arr;
//注意,对象解构不用考虑顺序,但是数组解构一定按照顺序来
8.多使用模板字符串
9.多使用命名函数表达式
// 好的
const foo = function bar() {
// ...
};
10.使用默认参数语法,而不是重写函数参数
// 好的
function handleThings(opts = {}) {
// ...
}
11.保持function关键字的间距
// 好的
const x = function () {};
const y = function a() {};
12.永远不要重写参数
// 好的
function f2(obj) {
const key = Object.prototype.hasOwnProperty.call(obj, 'key') ? obj.key : 1;
}
- 多参数的函数定义和调用,应该像其他多行列表一样缩进的风格
// 好的
function foo(
bar,
baz,
quux,
) {
// ...
}
14.方法可以返回 this 以帮助方法链接
class Jedi {
jump() {
this.jumping = true;
return this;
}
setHeight(height) {
this.height = height;
return this;
}
}
const luke = new Jedi();
luke.jump()
.setHeight(20);
15.不要直接在 export 上进行导出
// 这样不太好
// filename es6.js
export { es6 as default } from './AirbnbStyleGuide';
// 这样比较好
// filename es6.js
import { es6 } from './AirbnbStyleGuide';
export default es6;
16.export不导出可变绑定,尽量用const常量
17.优先使用default
18.导入导出也需要和数组一样进行缩进
19.使用点语法访问属性
20.2 ** 10 == Math.pow(2, 10)
21.在所有的多行代码块使用括号
22.注释写在上方,而且要空一行,除非是在代码块的第一行;注释应当与//隔开一个空格
23.注释中如果表示有问题需要解决标注todo
class Calculator extends Abacus {
constructor() {
super();
// TODO: total 需要变成一个可配置的选项参数
this.total = 0;
}
}
24.尖括号{}内需要左右添加空格
// 好
const foo = { clark: 'kent' };
25.对象末尾也添加逗号
26.分号问题,分号还是要的
27.parseInt尽量有第二个参数,参数一是几进制的
28.当不想缓存this的时候可以使用箭头函数
29.文件导入时导入默认模块的名字应当和文件名相同
30.模块导出a constructor / class / singleton / function library / bare object使用帕斯卡拼写法
31.略缩词应当全部为大写或者小写
32.常量可以完全大写
33.如果属性/方法的结果是布尔值,使用 isVal() 或 hasVal().