JavaScript代码的速度被分成两部分:下载时间和执行速度。
下载时间
Web浏览器下载的是js源码,因此所有长变量名和注释都回包含在内。这个因素会增加下载时间。1160是一个TCP-IP包中的字节数。最好能将每个javascript文件都保持在1160字节以下以获得最优的下载时间。
由于这个原因,要删除注释、删除制表符和空格、删除所有的换行、将长变量名缩短。
遵循这4条比较困难。因此用外部程序(ECMAScript Cruncher)来帮助我们。
要运行ESC,必使用Windows系统,打开一个控制台窗口,然后使用以下格式的命令:
cscript ESC.wsf -l [0-4] -ow outputfile.js inputfile1.js [inputfile2.js]
第一部分,cscript,是Windows Shell脚本解释程序。文件名ESC.wsf是ESC的程序本身。然后是压缩级别,一个0到4的数值。-ow选项表示下一个参数是优化后输出的文件名。最后,剩下的参数是要进行优化的JavaScript文件,可以有多个文件(多个文件在优化后后会按顺序放到输出文件中)。
0 —— 不改变脚本,要将多个文件拿到单个文件中时用用。
1 —— 删除所有的注释。
2 —— 除等级1外,再删除额外的制表符和空格。
3 —— 除等级2外,再删除换行。
4 —— 除等级3外,再进行变量名替换。
ESC擅长把变量名替换成无意义的名称,它还具有一定的智能,进行私有对象先进性和方法名的替换(由名称前后加上两个下划线表示),所以私有特性和方法依然保持其私有性。
ESC不会更改构造函数名、公用属性和公用方法名,所以无需担心。但要注意的是如果某个JavaScript引用了另一个文件中的构造函数,4级优化会把对构造函数的引用替换成无意义的名称。解决方法是将两个文件合成一个文件,这样就会保持构造函数的名称。
其他减少字节数的方法还有几个。
1.因为在javascript语言中 true等于1,false等于0。因此,脚本包含的字面变量true都可以用1来替换,而false可以用0来替换。
例如:
var bFound = false;
for (var i = 0; i < aTest.length && !bFound; i++) {
if (aTest[i] == vTest) {
bFounde = true;
}
}
var bFound = 0;
for (var i = 0; i < aTest.length && !bFound; i++) {
if (aTest[i] == vTest) {
bFounde = 1;
}
}
这两段代码运行方式完全相同,而后者节省了7个字节。
2.缩短否定检测
代码中常常会出现检测某个值是否满足条件。而大部分作的判断某个变量是否为undefined 、null 、false。可以用逻辑非来简化判断。例如
if (oTest != undefined) {
//do someting
}
if (oTest != null) {
//do someting
}
if (oTest != false) {
//do someting
}
以上代码可以替换成
if (!oTest) {
//do something
}
为什么可以替换呢?因为逻辑非操作在遇到undefined 、null 、false时返回true这样做可以节省很多字节。
3.定义数组、对象时候的技巧
var oTest = new Array;
var oTest = [];
var oTest = new Object;
var oTest = {};
是等价的
执行时间
我们可以做一些简单的事情提高javascript性能。我觉得也是编写javascript的一些技巧。
1.关注范围
书中的范围我理解为作用域。
在javascript中默认的范围是window。在window范围中创建的变量旨在页面从浏览器卸载后才会销毁。在函数中创建的变量只在函数中的范围内有效。函数执行后就销毁。在引用变量时,javascript解释程序在最近的范围内查找,如果没有救灾上一层次中查找。直到window范围。如果window中也找不到。则出现错误。本地范围内的变量比全局变量执行起来要更快。
提高javascript执行速度可以有下面几种方法
A.使用局部变量。
在函数中总是用var来定义变量。如果直接使用变量而不在函数中定义,则变量会创建在window范围内。也就是说执行函数遇到该变量时,javascirpt程序就会按层次到最上层才会查找到该变量。
不要这样:
function xxx() {
name = "abc";
alert(name);
}
B. 避免with语句
范围越小执行速度越快。
alert(document.title);
alert(document.body.tagName);
alert(document.location);
可以替换成
with (document) {
alert(title);
alert(body.tagName);
alert(location);
}
这的确缩短了程序的长度,但是减少代码不能弥补损失的性能。为什么呢?
因为:使用with语句时要强制解释程序不仅要在范围内查找局部变量。还强制检测每个变量及指定的对象,看其是否为特性。因为也可以在函数中定义变量title或者location。
2.Javascript陷阱
A. 避免多字符串用+号连接
多字符串连接最好用StringBuffer对象。该对象封装了Array用join()方法进行连接字符串。
B.优先使用内置方法
Js提供了相当丰富的内置方法可以充分利用
C.存储常用的值
多次使用同一个值时,可以将其存储在局部变量中提高访问速度。
3.减少语句数量
例如:
var iFive = 5;
var sColor = "blue";
可以替换成
var iFive = 5, sColor = "blue";
//另外
var sName = aValues[i];
i++;
//可以替换成
var sName = aValues[i++];
另外可以用json来代替对象定义。
4.节约使用DOM
DOM处理算是javascript中最耗时的操作之一。解决这个问题的方法是尽可能避免对DOM文档中的元素直接进行DOM操作。
这里要学会使用文档碎片对象即document.createDocumentFragment()。
分享到:
相关推荐
"JavaScript代码优化一例" 本文主要讨论JavaScript代码的优化,着重于介绍JavaScript代码在企业开发中的重要性及其优化方法。 一、JavaScript代码的重要性 随着Web 2.0和Ajax概念的提出,JavaScript代码得到了...
本资源“javascript经典特效---javascript代码自动生成.rar”显然聚焦于如何利用JavaScript生成代码,以创建出吸引人的视觉特效。这个压缩包内包含了一个名为“javascript代码自动生成.htm”的文件,很可能是教程或...
本文将深入探讨"前台JavaScript速度优化"的相关知识点,包括但不限于代码优化策略、工具应用以及Ajax性能提升。 一、代码优化策略 1. 减少DOM操作:频繁的DOM操作会降低页面性能,因为每次操作都需要浏览器重新...
总之,JSMinifier作为一款基于Java的JavaScript代码压缩工具,为开发者提供了一种快速、简单的方式来进行代码优化。通过合理使用,可以显著提升网页加载速度,降低服务器压力,为用户提供更好的在线体验。在实际使用...
JavaScript异步代码优化是开发过程中不可或缺的一环,尤其是在前端开发中,由于JavaScript的单线程特性,异步处理显得尤为重要。本文将深入探讨JavaScript异步编程的问题及其优化策略。 首先,我们来关注最常见的一...
JavaScript代码优化是一项持续且重要的工作,它有助于提高代码的执行效率、可读性和可维护性。以下是根据给定文件内容总结的关于JavaScript代码优化的8点要点。 1. 松耦合原则 松耦合是一种设计原则,指的是在修改...
JavaScript代码压缩工具是一种优化网页性能的关键技术,尤其在当今互联网应用越来越复杂,JavaScript文件体积日益庞大的背景下,其重要性不言而喻。压缩JavaScript代码的主要目的是减少文件大小,提高网络传输效率,...
通过学习和理解这些JavaScript广告代码,开发者可以掌握如何在自己的网站上创建和优化广告,同时提升网站的用户体验和商业价值。对于网页设计师和前端开发者来说,熟练掌握这些技术是提升专业技能的重要途径。这个...
3. 代码优化:通过分析代码逻辑,代码生成器可以生成优化过的JavaScript,提高代码执行效率。 4. 代码格式化:自动格式化代码,保持代码整洁,遵循一定的编码规范。 5. 插件扩展:许多代码生成器支持插件系统,...
在"272个超酷经典推荐JavaScript代码"这个资源中,我们可以预见到一系列实用且创新的JavaScript编程示例,这些示例将帮助开发者提升他们的技能,并为网页增加丰富的用户体验。 1. **基础语法和数据类型**:...
"超实用的javascript代码段"是席新亮著作的一个资源集合,提供了许多实际开发中常用且高效的代码片段,对于学习和提升JavaScript编程技能非常有帮助。 一、基础语法与类型 JavaScript的基础语法包括变量声明(var、...
10. 游戏优化:代码使用了游戏优化技术,例如使用缓存和优化游戏循环,提高了游戏的性能和流畅度。 JavaScript 小游戏代码汇总展示了 JavaScript 语言在游戏开发中的应用,包括游戏逻辑、游戏对象、游戏事件和游戏...
2. **代码调试与优化**:掌握源代码可以帮助开发者更好地调试和优化自己的JavaScript程序。 3. **二次开发**:许多开源项目提供了可扩展的源代码,允许开发者根据自身需求进行定制化开发。 ### 如何获取 JavaScript...
JavaScript代码加载优化是提高网页性能的关键技术之一,尤其是在处理大量脚本或第三方追踪代码时。在给定的例子中,我们看到一种将统计代码分离并异步加载的方法,以避免阻塞页面渲染,同时确保统计数据的准确收集。...
《grunt代码优化管理工具源码解析》 在现代Web开发中,代码优化和管理是提升应用性能的关键步骤。本文将深入探讨"grunt代码优化管理工具"的源码,揭示其在代码优化和性能提升方面的机制,帮助开发者更好地理解和...
这篇“超实用的JavaScript代码段”文档很可能包含了许多常用的、实用的JavaScript函数和技巧,可以帮助开发者提高效率,解决实际问题。 首先,JavaScript的基础知识包括变量声明(var、let、const)、数据类型...
总的来说,JavaScript代码混淆器是开发者保护代码、优化性能的重要工具。JSMin、YUI Compressor和JSObfuscator各有其特点和适用场景,选择哪一种取决于实际的需求,例如,对于追求极致压缩的场景,JSMin和YUI ...
本文将深入探讨“Java调用JavaScript代码”的技术实现,以及它在实际项目中的应用场景。 Java和JavaScript虽然名字相似,但它们是两种完全不同的编程语言,各自有其特定的用途。Java是一种静态类型的、面向对象的...