同事都称赞--JS代码风格

232 阅读1分钟

原文:前往异世界,作者|殷荣桧,本文学习总结,有错误之处感谢指出。

变量

  • 不要多余的变量的,尽量少声明可以合并的变量,没用到的变量删了,以免以后不敢删
  • 名字上看懂的变量,无需注释,例如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书中不建议,用行为委托,书中有这一章)