1、那些需要使用函数表达式的场合,尽量用箭头函数代替。因为这样更简洁,而且绑定了this。
2、所有配置项都应该集中在一个对象,放在最后一个参数,布尔值不可以直接作为参数。
3、不要在函数体内使用arguments变量,使用rest运算符(...)代替。因为rest运算符显式表明你想要获取参数,而且arguments是一个类似数组的对象,而rest运算符可以提供一个真正的数组。
// bad function concatenateAll() { const args = Array.prototype.slice.call(arguments); return args.join(''); } // good function concatenateAll(...args) { return args.join(''); }
4、注意区分Object和Map,只有模拟现实世界的实体对象时,才使用Object。如果只是需要key: value
的数据结构,使用Map结构。因为Map有内建的遍历机制。
let map = new Map(arr); for (let key of map.keys()) { console.log(key); } for (let value of map.values()) { console.log(value); } for (let item of map.entries()) { console.log(item[0], item[1]); }
5、总是用Class,取代需要prototype的操作。因为Class的写法更简洁,更易于理解。使用extends
实现继承,因为这样更简单,不会有破坏instanceof
运算的危险。
6、如果模块只有一个输出值,就使用export default
,如果模块有多个输出值,就不使用export default
,不要export default
与普通的export
同时使用。
7、如果模块默认输出一个函数,函数名的首字母应该小写。如果模块默认输出一个对象,对象名的首字母应该大写。