1、if else 语句中变量赋值为布尔值

if (a > b) {
status = true;
} else {
status = false;
}
// 可以简化为
status = a > b

if语句的条件会自动转换为布尔值,如果在使用时不确定是否为布尔值,可以对表达式双重取反(!!).

2、if else 语句中变量赋值为非布尔值

if (a > b) {
status = 1;
} else {
status = 2;
}
// 可以简化为
status = a > b ? 1 : 2;

3、用命名常量代替魔数(数值是编程者自己指定的,其他人不知道数值有什么具体意义)

function getUserState() {
// 人数达到5人,不考虑时间直接成功
if (users.length == 5) {
return 1;
} // 超过时间 失败
if (serverTime > endTime) {
return 0;
} // 在时间范围内 && 人数不到5人
if (joinedGroup == '0') {
return 2;
} else {
return 3;
}
return;
}

0,1,2,3这些数字具体的含义不是很清晰,用常量来代替。

const STATE = {
// 拼团失败
GROUP_SHOPPING_FAIL: 0,
// 拼团成功
GROUP_SHOPPING_SUCCESS: 1,
// 符合参加活动的资格
CAN_JOIN: 2,
// 已经参加活动
ALREADY_JOIN: 3
}; groupState = STATE => ({joinedUserCount, joinedGroup, serverTime, endTime}) => {
if (joinedUserCount >= 5) {
return STATE.GROUP_SHOPPING_SUCCESS;
}
if (serverTime > endTime) {
return STATE.GROUP_SHOPPING_FAIL;
}
return joinedGroup == '0'
? STATE.CAN_JOIN
: STATE.ALREADY_JOIN;
}

4、函数参数比较多(个人建议超过3个),最好用json对象,在方法里面要判断是否传入对象,没传入对象,要赋值为空对象,防止后面用对象的属性报错,传入的参数最好可以有个默认值。

5、在多个逻辑或(||)表达式中,同一个变量跟多个状态做===比较。

e.target.id == 'titleDrag' || e.target.id == 'subtitleDrag'

// 改成下面这种写法,在条件比较多时就会显得比较简洁:
['titleDrag', 'subtitleDrag'].indexOf(e.target.id) > -1

6、建议不再使用var命令,使用let或者const,因为使用var声明的变量会提升到代码块的头部,违反的变量先声明后使用的原则。

使用const声明常量有2个好处:阅读代码的人会意识到不应该修改这个值;防止无意间修改变量导致错误。

7、静态字符串一律使用单引号,包含变量的动态字符串使用反引号(``)。

8、rest参数(…变量名)用于获取函数的多余参数,将用逗号分隔的参数序列保存到数组中,rest参数中的变量代表一个数组,可以代替arguments对象。

扩展运算符(…)将一个数组转为用逗号分隔的参数序列。如果函数的形参为多个变量,而实参是一个数组,则不需要使用apply将数组转化成函数的参数,使用扩展运算符即可展开数组。

9、跟接口相关的代码最好写在一个文件中,在一个常量对象中保存接口名称

const API = {
GET_INFOS_BY_USER_ID:'getInfosByUserId'
}; export var getInfosByUserId = function (params) {
return getJSONP(API.GET_INFOS_BY_USER_ID, params);
};

这样的话,接口易于维护,当接口有变动时,只需改动这一个地方,不需要改动其他引用该接口的代码。

10、公共方法记得添加注释,按照jsDoc格式添加注释。

11、代码的格式要规范,赋值运算符、逻辑运算符前后最好添加空格,赋值语句结束要有分号,尤其是export导出一个变量,代码的缩进保持一致,更容易阅读。

努力学习,不断总结中~

JavaScript代码优化的更多相关文章

  1. JavaScript代码优化新工具UglifyJS

    jQuery 1.5 发布的时候 john resig 大神说所用的代码优化程序从Google Closure切换到UglifyJS,新工具的压缩效果非常令人满意. UglifyJS 是一个服务端no ...

  2. 《JavaScript 代码优化指南》

      ~~教你向老鸟一样敲代码~~. 1. 将脚本放在页面的底部 ... <script src="./jquery.min.js"></script> &l ...

  3. JavaScript代码优化指南

    1. 将脚本放在页面的底部 <script src="./jquery.min.js"></script> <script src="./i ...

  4. JavaScript代码优化(下载时间和执行速度优化)

    JavaScript代码的速度被分成两部分:下载时间和执行速度. 下载时间 Web浏览器下载的是js源码,因此所有长变量名和注释都回包含在内.这个因素会增加下载时间.1160是一个TCP-IP包中的字 ...

  5. javascript 代码优化工具 UglifyJS

    安装: 1. 安装 node.js 环境 (这个不用我教了吧,网上教程一大堆哦.) 2. 进入 https://github.com/mishoo/UglifyJS  右上角 “Download” Z ...

  6. 关于javascript代码优化的8点建议

    前面的话 本文将详细介绍JS编程风格的几个要点 松耦合 当修改一个组件而不需要更改其他组件时,就做到了松耦合 1.将JS从CSS中抽离:不要使用CSS表达式 //不好的做法 .box{width: e ...

  7. javascript: 代码优化

    一.避免全局查找 在一个函数中会用到全局对象存储为局部变量来减少全局查找,因为访问局部变量的速度要比访问全局变量的速度更快些 function search() { //当我要使用当前页面地址和主机域 ...

  8. javascript之变量、作用域、作用域链

    一.变量 javascript的变量是松散类型的,所谓松散类型就是说定义的变量可以用来保存任何类型的数据.定义变量时要使用var操作符后面跟变量名.这里的var是一个关键字,如果定义变量时省略了var ...

  9. Regexper:牛逼的 JavaScript 正则可视化工具

    RequireJS Optimizer 是 RequireJS 自带的前端优化工具,可以对 RequireJS 项目中的 JavaScript & CSS 代码使用 UglifyJS 或者 C ...

随机推荐

  1. 胜利大逃亡,bfs,广度优先搜索

    题目描述: Ignatius被魔王抓走了,有一天魔王出差去了,这可是Ignatius逃亡的好机会.魔王住在一个城堡里,城堡是一个A*B*C的立方体,可以被表示成A个B*C的矩阵,刚开始Ignatius ...

  2. Django在根据models生成数据库表时报错: __init__() missing 1 required positional argument: 'on_delete'

    原因: 在django2.0后,定义外键和一对一关系的时候需要加on_delete选项,此参数为了避免两个表里的数据不一致问题,不然会报错:TypeError: __init__() missing ...

  3. WINDOWS7环境下Informatica的安装[新手]

    环境: 操作系统:Windows7(64位): 数据库:Oracle 11g R2: 数据库字符集:UTF-8 一.下载: (参考链接:https://blog.csdn.net/u011031430 ...

  4. C# 记录日志

    public static void WriteLogs(string fileName, string type, string content) { string path = AppDomain ...

  5. 关于mybatis配置文件mapper传int值的问题

    1.首先看mapper代码,这是个更新语句. <set> <if test="sendmode!='' && sendmode!=null"> ...

  6. Delphi7连接MySql数据库-DBGrid控件显示数据

    一个简单的Delphi7小程序,使用MySql数据库做简单查询,用DBGrid控件显示结果,实现过程如下: (1)在MySql中新建demouser表,插入记录用于测试. (2)在Delphi7中新建 ...

  7. python 解方程

    [怪毛匠子=整理] SymPy 库 安装 sudo pip install sympy x = Symbol('x') 解方程 solve([2 * x - y - 3, 3 * x + y - 7] ...

  8. Asp.net MVC Form认证,IIS改成集成模式后,FormsAuthentication.SetAuthCookie无效,Request.IsAuthenticated值,始终为false,页面提示HTTP 错误 401.0 - Unauthorized,您无权查看此目录或页面

    最近公司领导要求,IIS网站要由经典模式改为集成模式,以提高性能.改完之后,登录成功跳转到主页之后,页面提示“”HTTP 错误 401.0 - Unauthorized“,“您无权查看此目录或页面”, ...

  9. 在虚拟机上利用宿主机共享目录编译linux程序

    #前提条件: 宿主机:windows7 虚拟机:REDHAT 开发环境 qt4.7.4 +vs2010 . 代码在windows7 上编译成功 ,运行正常 在linux下编译需要的第三方库已经编译成功 ...

  10. java数字转IP 一行

    System.out.println(InetAddress.getByName(String.valueOf(12345)).getHostAddress());