无论我们做什么,只要开始做就离不开规范,像写字,写作文,开车,没有规范无法启动,或即使启动必然后期出现问题。写代码更是如此。编码规范尤其要从学习一门语文开始时首要学习的,这可以养成良好的习惯。
为什么要有规范,规范就是形成统一的风格,避免混乱,方便团队协作,降低维护成本(具统计软件80%时间都处于维护状态)。
最近开始前端知识的学习,现将看到的知识整理作个笔记,方便自己记忆。
一、 ES6
块级作用域
(1)let 取代 var
var
命令存在变量提升效用,let
命令没有这个问题
(2)全局常量和线程安全
字符串
静态字符串一律使用单引号或反引号,不使用双引号。动态字符串使用反引号。
// bad
const a = "foobar";
const b = 'foo' + a + 'bar';
// acceptable
const c = `foobar`;
// good
const a = 'foobar';
const b = `foo${a}bar`;
解构赋值
- 使用数组成员对变量赋值时,优先使用解构赋值0
- 函数的参数如果是对象的成员,优先使用解构赋值。
- 如果函数返回多个值,优先使用对象的解构赋值,而不是数组的解构赋值。
数组
使用扩展运算符(...)拷贝数组。
使用 Array.from 方法,将类似数组的对象转为数组。
函数
尽量用箭头函数代替。因为这样更简洁,而且绑定了 this。
简单的、单行的、不会复用的函数,建议采用箭头函数。如果函数体较为复杂,行数较多,还是应该采用传统的函数写法。
// good
[1, 2, 3].map((x) => {
return x * x;
});
// best
[1, 2, 3].map(x => x * x);
使用默认值语法设置函数参数的默认值。
// bad
function handleThings(opts) {
opts = opts || {};
}
// good
function handleThings(opts = {}) {
// ...
}
Map结构
注意区分 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]);
}