JS 之性能优化(1)
了解JS性能优化是学习前端必备的一项技能。下面就简单的列出几点:
1.注意作用域,避免全局查找。
访问全局变量比访问局部变量慢,是因为需要遍历作用域链,查找作用域链需要额外的时间。所以在一个函数中,将访问多次的全局对象或者域外变量存储为局部变量来使用。如某个方法需引用全局变量的值,则在该方法所在的对象的作用域中定义一个局部变量等于全局变量的值。
避免不必要的属性查找,将属性设置为局部变量。
function(){
var title = document.title;
for(var i=0;i<3;i++){
console.log(title);
}
}
2.优化循环
简化循环体。当循环的数量不多时,展开循环。当if-else较多时,建议使用switch语句。
3.最小化语句数
声明多个变量时,可以使用一个var关键字来声明,变量之间用逗号表示。
使用数组或对象字面量来新建数组或对象。var arr= [1,2,3,4];var map={a:1,b:2}
4.JS的执行尽量脱离DOM树,限制DOM操作的次数,优化DOM交互,尽量减少浏览器对DOM的渲染和重绘操作
最小化现场更新,现场更新就是立即对页面的显示进行更新。尽量少更新。这时候可使用文档碎片来构建DOM结构。document.createDocumentFragment()
使用innerHTML来构建大的DOM结构。但是也避免重复大量的使用。
5.使用事件代理
页面上的事件处理程序的数量和页面响应用户交互的速度之间有个负相关。所以为了减少事件处理程序,尽量使用事件委托技术。
6.JS的执行顺序
JS放HTML页面最后面时,不一定提升JS性能,但是在网速较慢的时候会快速的渲染页面。
7.JS定义行为,html定义内容,CSS定义外观,不混淆
8.减少HTTP请求数,JS压缩,HTTP压缩
9.数据尽量存储在数组里
10、代码的优化不是减少代码量,而是增加代码提高代码的可阅读性。
包括正确标记变量,封装某个重复的行为,合理的注释等。
PS:以上内容如果描述的不准确,欢迎拍砖。
JS 之性能优化(1)的更多相关文章
- Babylon.js官方性能优化文档中文翻译
在这里列出Babylon.js官方性能优化文档的中英文对照,并在CardSimulate项目里对其中的一些优化方法进行实践. How To 如何 Optimize your scene 优化你的场景 ...
- 多个JS文件性能优化
页面中引入的JS文件是阻塞式加载的,这样会影响页面性能.以下是JS文件性能优化方法: 一:将所有的<script>标签放到页面底部,也就是</body>闭合标签之前,这能确保在 ...
- JS 之性能优化(2)
继续上一篇的JS性能优化之后,下面接着讲关于前端性能优化的内容.如果有不对的地方欢迎纠正. 1.避免过多的重排与重绘操作. 尽量将DOM中的多个读操作放一起,中间不要插入写的操作,因为写操作会导致浏览 ...
- [Ext JS 4]性能优化
一般的优化技巧 1. 检查你定义的时间监听器 正确的设置事件监听器对性能会有很大的影响. 举例来说, 在定义一个store的时候,设置一个load 的事件去触发从后台读取数据,如果设置single 的 ...
- js前端性能优化之函数节流和函数防抖
前言:针对一些会频繁触发的事件如scroll.resize,如果正常绑定事件处理函数的话,有可能在很短的时间内多次连续触发事件,十分影响性能 节流: 节流:使得一定时间内只触发一次函数. 它和防抖动最 ...
- [js] 前端性能优化
原文链接:http://www.cnblogs.com/xxcanghai/p/5205998.html 链接:http://www.zhihu.com/question/21658448/answe ...
- js代码性能优化的几个方法
相信写代码对于大部分人都不难,但想写出高性能的代码就需要一定的技术积累啦,下面是一些优化JavaScript代码性能的常见方法. 一.注意作用域 1.避免全局查找 使用全局变量和函数肯定要比局部的开销 ...
- Ext.js性能优化漫谈
Ext.js是一个用于建立企业级应用的纯JS框架.毫无疑问,它为我们提供了大量的组件,比如container,panel,field,grid,这些组件使用起来很方便,不需要去写js和html,但是e ...
- js加载优化三
Javascript性能优化之异步加载和执行 Author:小欧2013-09-17 随着科技的发展,如今的网站和五六年前相比,现在的人们对web的要求越来越高了,用户体验,交互效果,视觉效果等等都有 ...
随机推荐
- Unity3D事件函数的执行顺序 - 包含渲染等模块的完整版,中英文对照
原文地址: http://www.cnblogs.com/ysdyaoguai/p/3746828.html In Unity scripting, there are a number of eve ...
- Cornerstone无法上传静态库文件(.a文件)
在用Cornerstone同步文件时出现一个错误 检查后发现是缺少了一个文件 查询了网上的资料后发现是Cornerstone自动忽略了.a文件,所以上传到svn服务器时.a文件不会跟随工程一起传上去, ...
- iOS开发中的一些定时器
在软件开发过程中,我们常常需要在某个时间后执行某个方法,或者是按照某个周期一直执行某个方法.在这个时候,我们就需要用到定时器. 然而,在iOS中有很多方法完成以上的任务,到底有多少种方法呢?经过查阅资 ...
- 《笨办法学python第三版》习题26,原错误代码及正确代码
#import ex25 1 def break_words(stuff): """This function will break up words for us.&q ...
- 如何解决"应用程序无法启动,因为应用程序的并行配置不正确"问题
应用程序事件日志中: "C:\windows\system32\test.exe"的激活上下文生成失败.找不到从属程序集 Microsoft.VC80.MFC,processorA ...
- Autocomplete:属性介绍、firefox中文支持问题
如有问题,请前往 http://www.cnblogs.com/dreamowneryong/p/4953911.html 原文评论交流 一,属性介绍 * minChars (Number) 在触发a ...
- mac:ssh登陆总是需要输入钥匙串密码解决
方法1: finder -> 左上角:前往->按住option建->多出一个资源->KeyChains->第一个文件夹(删除掉次文件夹) 然后重启即可 方法2: ssh- ...
- Linux系统升级更新openssh 7.3p1
放在最前面:鉴于网上爬虫猖獗,博客被盗时有发生,这里需要来个链接,大家请认准来自博客园的Scoter:http://www.cnblogs.com/scoter2008,本文将持续更新 最近绿盟给扫描 ...
- centos下yum搭建安装linux+apache+mysql+php环境
一.脚本YUM源安装: 1.yum install wget #安装下载工具wget 2.wge ...
- Swift 语法笔记01
Swift 好多新奇的地方啊...妈的 var display: int { get() set() } Tuple: let x: (d:Double, e:String, f:Int) = (3. ...