`
onlysoymilk
  • 浏览: 98984 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

javascript 常用优化方法

阅读更多

对于Javascript的代码速度,我们一般可以将它分为下载时间和执行速度两部分,所以,要做优化的话,我们可以从这两部分来入手。

一、优化代码下载速度

  1. 在单个TCP-IP包中,最多能放入的字节数是1160,所以每个js文件的字节大小,最好不要超过这个数,以便获得最优的下载时间。
  2. 合并js文件。如果一个页面中存在加载多个js外部文件的情况,则最好将它们合并为一个,这样可以有效减少HTTP请求数,从而节省下载时间。
  3. 为外部js使用不同的域名。我们知道,浏览器在下载页面时,对于同一个域名下的最大并发数是一定的(例如IE6/7在HTTP1.0下是2个,而Firefox3是6个),所以,假如前端页面的域名是www.phpblog.cn的话,外部js文件的域名可以改为js.phpblog.cn,这样做就可以使浏览器在js.phpblog.cn域名上也使用最大并发数下载,从而加快下载速度。(以上只是拿我的域名作为例子,目前我的站点还没有这样做)
  4. 浏览器缓存。在页面中引用的外部js文件是可以被浏览器缓存的,缓存时间由服务器发给客户端代理头部中的Last-modified、Etag或者Expires决定,所以缓存的时间长短,也成了优化速度的一个方面。我建议将js的缓存时间设置的较长,而如果一旦更改了js文件后,可以在引用url的js文件后加个自定义参数,来强迫客户端重新下载js。例如:

    <script src=”http://js.phpblog.cn/jquery.js?var=2.0″ type=”text/javascript”></script>

  5. 删除代码中的注释、制表符、空格、换行,这样做可以有效减小 js文件的体积。我们可以使用现成的工具来做这件事情,例如我之前介绍过的Google Closure Compiler
  6. 替换变量名,将较长的变量名替换为较短的变量名,以减少js文件体积。这方面,用Google Closure Compiler 也可以完成。
  7. 替换布尔值。我们知道,对于比较来说,true等于1,false等于0。因此,在脚本中的true、false都可以用1和0来代替,这样可以减少几个字节。
  8. 使用数组和对象字面量。例如,定义数组时,使用var o = new []而不使用var o = new Array;定义对象时,使用var o = {}而不使用var o = new Object,它们是完全等价的。

二、优化代码执行时间

  1. 关注变量范围。在js中,变量范围是很重要的。我们可以认为变量的范围在浏览器中是一个树状层级,查找一个变量时,浏览器首先会在最近的范围中查找,如果没有找到,则会到它的父范围中查找,如果还没有找到,则再去父父的范围中查找,直到查找到window对象范围(浏览器默认的全局变量属于window对象)。这就说明,让浏览器最快的找到变量,就可以加快代码的执行速度。在js中,使用var定义的变量为局部范围变量,而不使用var定义的变量属于全局范围变量,所以,如果我们在某个方法中用到的变量,一定要将它定义成局部变量,这样就不会使浏览器一直找到window对象才获得该变量。和变量范围有关的另一个优化技巧就是,不使用with语句。因为with语句会创建另一个范围,增加了不必要的查找。
  2. 反转循环。在使用for循环时,我们经常这样用:

    for(i=0; i<100; i++) {}

    但是,你需要知道,将循环反转后,它的速度将更快:

    for(i=100; i>=0; i–) {}

    这是因为,使用常数0来做为判断依据速度更快。当然,使用while循环也可以反转(变换成do..while),具体方法,我就在这里不再赘述。

  3. 除了反转循环,我们还可以使用循环合并,来进一步提高循环的速度。关于循环合并的具体方法,我在这篇文章 里已经介绍过。这里要特别说明的是,while循环也可以合并,方法和反转循环一样,也是使用do…while来替。
  4. 使用js的内置方法。例如,我们要计算一个数的阶乘,假如你不知道Math对象有个pow()方法的话,你很可能会自己写一个阶乘计算函数,但是要知道,这样做的效率是远远不如直接调用内置方法Math.pow()的,因为内置方法是用C++或C语言编译过的,速度要远远高于解释运行的js。
  5. 字符串连接优化。使用”+”来连接字符串的效率是很差的,尤其表现在一次连接多个字符串时,例如:

    var s = “a” + “b” + “c” + “d”;

    因为此时js内部会进行多次连接操作,从而导致效率的下降。为了避免这个问题,我们可以使用Array.join()方法来代替:

    var a = ["a", "b", "c", "d"];
    var s = a.join();

  6. 存储常用的值。在js中,访问某个对象的属性,从效率上来说,都是非常昂贵的操作。所以可以将多次用到的值存储到一个变量里。例如,下面这个代码速度较慢:

    o1.style.left = document.body.clientWidth;
    o2.style.left = document.body.clientWidth;

    而下面的代码速度较快:

    var left = document.body.clientWidth;
    o1.style.left = left;
    o2.style.left = left;

  7. 在js中,脚本中的语句越少,执行速度越快。基于这个原则,我们可以知道,使用一个var来定义多个变量,要快于多个var定义。例如:

    var a = 1, b = 2, c = 3;

    要快于:

    var a = 1;
    var b = 2;
    var c = 3;

    同样,以下的代码:

    var s = a[i++];

    要快于:

    var s = a[i];
    i++;

  8. 节约使用DOM。在用js改变页面上任何一个元素的样式时(或者增加删除元素),都会导致浏览器重新渲染页面,这个开销是不小的。因此,在连续多次操作DOM时,我们可以先将所有变化保存到DOM碎片(fragment)中,然后再一次性操作页面DOM。例如:

    var arrText=["1","2","3","4","5","6","7","8","9","10"];
    var oFrag=document.createDocumentFragment();
    for(var i=0;i
    {
    var op=document.createElement(“P”);
    var oText=document.createTextNode(arrText[i]);
    op.appendChild(oText);
    oFrag.appendChild(op);

    }
    document.body.appendChild(oFrag);

以上这些,只是我知道的一些优化方法,当然,js中的优化方法肯定不止这一些,我只能是抛砖引玉,更多的方法,还需要大家一起补充。

转载请注明出处:http://www.phpblog.cn/archives/328

分享到:
评论

相关推荐

    javascript常用函数 javascript 常用库

    一、JavaScript常用函数 1. 数组操作函数 - `push()`: 向数组末尾添加一个或多个元素,并返回新长度。 - `pop()`: 删除并返回数组最后一个元素。 - `shift()`: 删除并返回数组第一个元素。 - `unshift()`: 在...

    javascript优化

    JavaScript 优化 JavaScript 作为一种...通过选择器优化、方法链式调用、事件绑定和解除绑定、浏览器类型判断、数组和对象操作、字符串操作、元素操作、toggleClass 和事件处理等方法,可以提高 JavaScript 的性能。

    javascript常用特效(三大资源).可做参考

    JavaScript是一种广泛应用于网页和网络应用的编程语言,尤其在实现动态和交互性效果方面具有显著...记得实践是检验真理的唯一标准,动手尝试并不断优化你的代码,将是成为一名优秀的JavaScript特效开发者的重要步骤。

    jquery 库与原生javascript 常用方法

    **jQuery库与原生JavaScript常用方法** jQuery是一个广泛使用的JavaScript库,它简化了HTML文档遍历、事件处理、动画和Ajax交互。这个博客主要探讨了jQuery库与原生JavaScript之间的对比,以及它们各自的一些常用...

    javascript常用函数集合

    这个"javascript常用函数集合"涵盖了JavaScript编程中常见的函数和概念,是学习和提升JavaScript技能的重要资源。以下是对这些常见函数和基础知识的详细解释: 1. **变量声明**:在JavaScript中,我们可以使用`var`...

    javascript常用的两种幻灯片实现方法

    本文将深入探讨JavaScript中两种常见的幻灯片实现方法。 1. 基于CSS3和JavaScript的幻灯片 一种常见的幻灯片实现方式是结合CSS3的动画属性和JavaScript的事件监听。CSS3提供了诸如`transition`和`animation`等特性...

    程序员常用JavaScript特效

    本文将深入探讨一些程序员常用的JavaScript特效及其背后的原理。 首先,我们来谈谈JavaScript基础。JavaScript是一种解释型、弱类型、基于原型的对象导向语言,它主要在浏览器环境中运行,用于处理用户交互、操作...

    javascript 常用广告代码

    JavaScript是一种广泛应用于网页开发...在"常用的网页广告代码"这个压缩包中,可能包含了实现以上功能的JavaScript代码示例和库,供开发者参考和学习。理解并熟练运用这些知识点,有助于提升网页广告的效率和用户体验。

    JavaScript 源代码大全(常用、实用、特效)

    这份"JavaScript 源代码大全"集合了多种常用、实用和特效的代码,旨在为开发者提供丰富的参考资料和实践示例。 一、JavaScript基础概念 JavaScript是一种解释型的、面向对象的、弱类型的脚本语言,主要用于网页和...

    工作中常用的javascript脚本

    这个压缩包中收集的"工作中常用的javascript脚本"涵盖了各种实用场景,帮助开发者提高工作效率。 1. **基础语法** JavaScript的基础语法包括变量声明(`var`, `let`, `const`)、数据类型(如字符串、数字、布尔、...

    javascript 常用 技巧.rar

    JavaScript是一种广泛应用于网页和网络...以上只是部分JavaScript常用技巧的概述,实际的压缩包资源可能包含了更具体的示例和代码片段,通过学习和实践这些技巧,你将能够编写出更高效、更易于维护的JavaScript代码。

    JavaScript常用的数组操作方法1.pdf

    本文主要介绍了JavaScript中常见的数组操作方法,包括添加、删除和排序,这对于理解和优化JavaScript代码至关重要。 1. **数组的添加** - **concat()** 方法用于合并数组,它不会改变原始数组,而是返回一个新的...

    Javascript常用的操作

    以上只是JavaScript常用操作的一部分,实际的博文中可能还涉及正则表达式、错误处理、模块化(CommonJS、ES模块)、性能优化等方面的知识。不断学习和实践,掌握这些概念和技术,将有助于提升你在JavaScript开发中的...

    Meteora 0.7 JavaScript常用插件集.zip

    "Meteora 0.7 JavaScript常用插件集.zip" 是一个包含了JavaScript常用插件的压缩文件,主要用于提高前端开发效率和增强网页功能。这个集合可能包括了各种类型的插件,如DOM操作、动画效果、数据处理、表单验证、响应...

    Meteora 0.7 JavaScript常用插件集

    **Meteora 0.7 JavaScript 常用插件集详解** Meteora 0.7 是一个针对JavaScript开发者的资源集合,旨在提供一系列实用的插件,以提升网页编程的效率和功能。这个集合包含了多种不同类型的插件,涵盖了前端开发的多...

    JavaScript常用代码示例.zip

    这个"JavaScript常用代码示例.zip"压缩包显然包含了多种常见的JavaScript编程实践和技巧,适用于初学者和有一定经验的开发者。以下是根据这些标签和文件名可能包含的一些JavaScript知识点的详细解释: 1. **基础...

    JavaScript常用对象详解

    ### JavaScript常用对象详解 在深入探讨JavaScript的常用对象之前,我们先来理解一下JavaScript作为一种脚本语言,在网页开发中的核心作用。JavaScript使网页具备了动态交互能力,它可以通过操作页面对象和执行各种...

    JavaScript 常用功能代码

    5. **函数**:JavaScript支持函数表达式(function foo() {})和箭头函数(() =&gt; {}),可以作为值传递,也可以作为对象的方法。 6. **对象和数组**:对象是键值对的集合,数组是一系列元素的有序集合。ES6引入的...

    JavaScript中的一些常用的方法

    JavaScript是一种广泛应用于网页和网络应用开发的脚本语言,它主要负责处理客户端的...总的来说,JavaScript中的这些常用方法是实现网页动态交互的基础,理解并熟练掌握它们对于编写高效、易维护的前端代码至关重要。

    最优化计算方法常用程序汇编(pdf)

    这个“最优化计算方法常用程序汇编”PDF文档很可能包含了一系列用于解决不同最优化问题的算法和代码实现。 首先,我们来看一下一维最优化部分。一维最优化是最简单的最优化问题,目标函数只依赖一个变量。常见的...

Global site tag (gtag.js) - Google Analytics