原文:前往异世界,作者|殷荣桧,本文学习总结,有错误之处感谢指出。
变量
- 不要多余的变量的,尽量少声明可以合并的变量,没用到的变量删了,以免以后不敢删
- 名字上看懂的变量,无需注释,例如firstName ,不要fName
- 特定的变量要声明值 < 8,8可以用常量代表, const MAX_INPUT_LEGNTH
- 命名不要太啰嗦,nameString => name
- 用变量解释长代码
const address = 'One Infinite Loop, Cupertino 95014';
const cityZipCodeRegex = /^[^,\\]+[,\\\s]+(.+?)\s*(\d{5})?$/;
//错误
saveCityZipCode(
address.match(cityZipCodeRegex)[1], // 这个公式到底要干嘛,对不起,原作者已经离职了。自己看代码
address.match(cityZipCodeRegex)[2], // 这个公式到底要干嘛,对不起,原作者已经离职了。自己看代码
);
//正确
const [, city, zipCode] = address.match(cityZipCodeRegex) || [];
saveCityZipCode(city, zipCode);
- 尽量不要使用全局变量
- 对于变量的求值变量,做好兜底,let lastName = fullName[1] || ''
函数
- 返回true/fasle函数,以should/is/can/has开头,isEmpty()
- 功能函数,为纯函数就是输入什么,就获取唯一的结果
- 参数说明
- 动作函数,以动词开头,意图明显
- 一个函数完成一个独立功能,不要一含多
- 使用命令式编程,少用for
- if else 过多,用switch或者数组
let handler = {
1: () => {....},
2: () => {....}.
3: () => {....},
default: () => {....}
}
// a =>1,2,3
handler[a]() || handler['default']()
尽量使用es6
- 箭头函数
- 模板字符 ``
- 结构赋值
const data = {name:'dys', age:1};
const {name, age} = data; // 怎么样,是不是简单明了
var fullName = ['jackie', 'willen'];
const [firstName, lastName] = fullName;
- 使用class,(还没这么用,你不知道的javaScript书中不建议,用行为委托,书中有这一章)