提高js性能的方法
1、文档瘦身
(1)删除注释(版权及法律声明部分应保留),运行时不需要注释。
(2)删除制表符、空格和换行符,这些只是为了便于程序的维护,但是与执行无关。
(3)替换长的变量名为短的变量名。
(4)使用 0 和 1 替代 false 和 true ,对于 x!=true , 可以使用 !x 代替。
(5)使用 [] 代替 new Array() , 使用{} 代替 new Object()。
(6)如果一次定义多个变量,尽量在同一行内定义。
可以使用工具来进行完成,比如: Microsoft Ajax Minifier 、 Yahoo YUI Compressor。
2、控制内存
(1)释放变量的引用。
(2)释放属性的引用。
(3)释放数组对象的引用。
3、优化代码
(1)如果函数体内语句较多,应避免从一个循环中多次调用一个函数。将函数分割成较小的函数,然后在循环中包含小函数的内容,可使效果更佳。
(2)尽可能使用内建函数,内建函数一般都是经过优化的,要比用户自定义函数运行速度更快。
(3)在开始循环前将 Array.length 赋予变量,将变量作为条件使用,而不是使用 Array.length 本身。
(4)也可以使用反转循环来优化执行,这样可以节省一个变量。
(5)注重优化循环及所有重复动作。解释引擎会花费许多时间来处理循环。
(6)在局部变量够用时,不要使用类属性或者全局变量。
(7)避免在循环体内申明变量,应该在循环体外声明。
(8)使用 try...catch...finally 语句时,要在 finally 语句中释放占用的自愿,否在在 catch 到错误后占用的资源不能释放。
(9)避免使用递归调用和嵌套循环,它们会严重影响性能,在不得不用的时候才使用。
(10)继承会增加方法调用的数量,而且会使用更多的内存,包括所需全部功能的类在运行时要比从超类继承某些功能的类更加有效。因此,用户可能需要在类的扩张性和代码有效性间做出一定的设计取舍。
(11)对于不需要立即运行的脚本,可以在 script 元素里面添加 defer 属性。
(12)避免使用 with 语句。
(13)setTimeOut() 和 setInterval()函数可以使用一个函数名或一个字符串作为首个参数。如果传递一个字符串,引擎将使用函数构造器创建一个新函数。
(14)函数缓存,即将函数或方法赋给一个变量是一个非常好的编程习惯。
提高js性能的方法的更多相关文章
- 提高PHP性能的方法技巧
1.用单引号代替双引号来包含字符串,这样做会更快一些.因为PHP会在双引号包围的字符串中搜寻变量,单引号则不会,注意:只有echo能这么做,它是一种可以把多个字符串当作参数的“函数”(译注:PHP手册 ...
- Android提高UI性能技巧
提高UI性能的方法事实上有非常多在实际的开发中都已经用到了,在此做一下总结. 1.降低主线程的堵塞时间 若一个操作的耗时较长(超过5秒),我们应该将其放入后台线程中运行.仅仅在须要改动UI界面时通知主 ...
- PHP提高网站性能的一些方法
前段时间面试问到了这个问题,回答的不是很全面,就去问了度娘,得到了一些比较全的答案,由于出处较多就没法确定原文出处了.下面是分享的答案. 一.大型网站性能提高策略: 大型网站,比如门户网站,在面对大量 ...
- Atitit.提升软件Web应用程序 app性能的方法原理 h5 js java c# php python android .net
Atitit.提升软件Web应用程序 app性能的方法原理 h5 js java c# php python android .net 1. 提升单例有能力的1 2. 减少工作数量2 2.1. 减少距 ...
- 22 mysql有那些”饮鸩止渴”提高性能的方法?
22 mysql有那些”饮鸩止渴”提高性能的方法? 正常的短连接模式是连接到数据库后,执行很少的SQL语句就断开,下次需要的时候再重新连接.如果使用的是短连接,在业务高峰期的时候,就可能出现连接数突然 ...
- 几种设计良好结构以提高.NET应用性能的方法
写在前面 设计良好的系统,除了架构层面的优良设计外,剩下的大部分就在于如何设计良好的代码,.NET提供了很多的类型,这些类型非常灵活,也非常好用,比如List,Dictionary.HashSet.S ...
- 总结的js性能优化方面的小知识
前言 一直在学习javascript,也有看过<犀利开发Jquery内核详解与实践>,对这本书的评价只有两个字犀利,可能是对javascript理解的还不够透彻异或是自己太笨,更多的是自己 ...
- 我总结的js性能优化的小知识
前言 一直在学习javascript,也有看过<犀利开发Jquery内核详解与实践>,对这本书的评价只有两个字犀利,可能是对javascript理解的还不够透彻异或是自己太笨,更多的是自己 ...
- js中apply方法的使用
js中apply方法的使用 1.对象的继承,一般的做法是复制:Object.extend prototype.js的实现方式是: Object.extend = function(destinat ...
随机推荐
- js数据类型 判断
1. js数据类型(两种数据类型) 基本数据类型:null undefined number boolean symbol string 引用数据类型: array object null: 空对象 ...
- Postman配置Pre-request scripts预请求对请求进行AES加密
1.首先,Postman的Pre-request scripts页面右边已经提供了一些模板,这些模板可以设置变量与环境变量,并使用双大括号对变量进行引用 {{info}} 2.对所有POST请求都进行 ...
- opencv python训练人脸识别
总计分为三个步骤 一.捕获人脸照片 二.对捕获的照片进行训练 三.加载训练的数据,识别 使用python3.6.8,opencv,numpy,pil 第一步:通过笔记本前置摄像头捕获脸部图片 将捕获的 ...
- Python MySQL Update
章节 Python MySQL 入门 Python MySQL 创建数据库 Python MySQL 创建表 Python MySQL 插入表 Python MySQL Select Python M ...
- RabbitMQ系列文章
详解 RabbitMQ 管理界面解析框架 (一) RabbitMQ系列(二)深入了解RabbitMQ工作原理及简单使用 RabbitMQ windows安装步骤 RabbitMQ管理页面各种属性详解 ...
- 第二十篇ORM查询与SQL语句
ORM查询与SQL语句 多表操作 创建模型 实例:我们来假定下面这些概念,字段和关系 作者模型:一个作者有姓名和年龄. 作者详细模型:把作者的详情放到详情表,包含生日,手机号,家庭住址等信息.作者详情 ...
- 面向对象-main函数
面向对象-main函数 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.编写main函数测试代码 /** * * @author 尹正杰 * */ public class ...
- P 1021 个位数统计
转跳点:
- UVA - 11892 ENimEN(博弈)
题意:有n堆石子,两个人拿,拿走最后的石子的人赢,poopi先拿,条件是,每个人必须从另外一个人最后拿过的石子堆中取石子,若那堆石子被拿没了,才可以自由地拿其他堆.要求每次拿的石子数不能为0.问谁赢. ...
- TX2-刷机完成后安装程序ubuntu_linux命令&TX2学习总结
Linux教程|菜鸟教程:http://www.runoob.com/linux/linux-tutorial.html 认识linux:ping命令:ping命令是常用的网络命令ping网关:pin ...