JavaScript代码性能优化总结篇


Posted in Javascript onMay 15, 2016

下面是我总结的一些小技巧,仅供参考。

以下代码基本上在jQuery的源码里面都可以看到,如有说得不对的地方,请大家指出。

尽量使用源生方法

javaScript是解释性语言,相比编译性语言执行速度要慢。浏览器已经实现的方法,就不要再去实现一遍了。另外,浏览器已经实现的方法在算法方面已经做了很多优化。

避免全局查找

在一个函数中会用到全局对象存储为局部变量来减少全局查找,因为访问局部变量的速度要比访问全局变量的速度更快些。

JavaScript代码性能优化总结篇

尽量减少循环次数

少一层循环,就能提高数倍性能。如果要对一个数组的每个元素进行多次操作,尽可能使用一次循环,多次操作,而不是多次循环,每次循环执行一次操作。尤其是在进行多个正则匹配的时候,尽可能合并正则表达式,在一次遍历中尽可能找到相应的匹配。

循环

JavaScript代码性能优化总结篇

switch

JavaScript代码性能优化总结篇

条件分支

将条件分支,按可能性顺序从高到低排列:可以减少解释器对条件的探测次数。

在同一条件 >2条件分支时,使用switch优于if:switch分支选择的效率高于if,在IE下尤为明显。4条分支的测试,IE下switch的执行时间约为if的一半。

使用三目运算符替代条件分支。

JavaScript代码性能优化总结篇

定时器

如果针对的是不断运行的代码,不应该使用setTimeout,而应该是用setInterval,因为setTimeout每一次都会初始化一个定时器,而setInterval只会在开始的时候初始化一个定时器。定时器

JavaScript代码性能优化总结篇

创建对象的另外一个办法-不使用new

JavaScript代码性能优化总结篇

用做标记的变量尽可能使用布尔类型

直接用true和false做标记,不要使用数字或者字符串的1和0来做标记。

Javascript 相关文章推荐
JavaScript设置body高度为浏览器高度的方法
Feb 09 Javascript
使用Sticky组件实现带sticky效果的tab导航和滚动导航的方法
Mar 22 Javascript
使用RequireJS库加载JavaScript模块的实例教程
Jun 06 Javascript
基于jQuery的ajax方法封装
Jul 14 Javascript
javascript ASCII和Hex互转的实现方法
Dec 27 Javascript
利用javascript实现的三种图片放大镜效果实例(附源码)
Jan 23 Javascript
Angular 2父子组件数据传递之局部变量获取子组件其他成员
Jul 04 Javascript
jquery获取transform里的值实现方法
Dec 12 jQuery
vue select选择框数据变化监听方法
Aug 24 Javascript
JavaScript面向对象编程小游戏---贪吃蛇代码实例
May 15 Javascript
使用vue自定义指令开发表单验证插件validate.js
May 23 Javascript
Vue+abp微信扫码登录的实现代码示例
Jan 06 Javascript
window.onload绑定多个事件的两种解决方案
May 15 #Javascript
js仿淘宝和百度文库的评分功能
May 15 #Javascript
RequireJS使用注意细节
May 15 #Javascript
JSON 的正确用法探讨:Pyhong、MongoDB、JavaScript与Ajax
May 15 #Javascript
jQuery插件开发汇总
May 15 #Javascript
Javascript的无new构建实例详解
May 15 #Javascript
Javascript基础知识盲点总结之函数
May 15 #Javascript
You might like
php中函数的形参与实参的问题说明
2010/09/01 PHP
PHP中使用unset销毁变量并内存释放问题
2012/07/05 PHP
php MessagePack介绍
2013/10/06 PHP
PHP在线书签系统分享
2016/01/04 PHP
Laravel接收前端ajax传来的数据的实例代码
2017/07/20 PHP
js计数器代码
2006/11/04 Javascript
javascript 变量作用域 代码分析
2009/06/26 Javascript
Javascript 垃圾收集机制介绍理解
2013/05/14 Javascript
jquery如何实现在加载完iframe的内容后再进行操作
2013/09/10 Javascript
js特殊字符转义介绍
2013/11/05 Javascript
对于Form表单reset方法的新认识
2014/03/05 Javascript
使用iojs的jsdom库实现同步系统时间
2015/04/20 Javascript
javaScript实现滚动新闻的方法
2015/07/30 Javascript
js遮罩效果制作弹出注册界面效果
2017/01/25 Javascript
微信小程序实战之轮播图(3)
2017/04/17 Javascript
Vue 父子组件数据传递的四种方式( inheritAttrs + $attrs + $listeners)
2018/05/04 Javascript
JS简单判断是否在微信浏览器打开的方法示例
2019/01/08 Javascript
微信小程序保存多张图片的实现方法
2019/03/05 Javascript
Vue-drag-resize 拖拽缩放插件的使用(简单示例)
2019/12/04 Javascript
ES6学习笔记之let与const用法实例分析
2020/01/22 Javascript
解决vue+elementui项目打包后样式变化问题
2020/08/03 Javascript
Js Snowflake(雪花算法)生成随机ID的实现方法
2020/08/26 Javascript
JS实现放大镜效果
2020/09/21 Javascript
Python ORM框架SQLAlchemy学习笔记之数据添加和事务回滚介绍
2014/06/10 Python
Python中使用partial改变方法默认参数实例
2015/04/28 Python
Python中循环引用(import)失败的解决方法
2018/04/22 Python
python 获取等间隔的数组实例
2019/07/04 Python
pytorch-RNN进行回归曲线预测方式
2020/01/14 Python
python多线程实现同时执行两个while循环的操作
2020/05/02 Python
keras 读取多标签图像数据方式
2020/06/12 Python
Html5元素及基本语法详解
2016/08/02 HTML / CSS
Html5之title吸顶功能
2018/06/04 HTML / CSS
资深财务管理人员自我评价
2013/09/22 职场文书
关于赌博的检讨书
2014/01/24 职场文书
感恩父母的演讲稿
2014/05/06 职场文书
react antd实现动态增减表单
2021/06/03 Javascript