如何优化JavaScript脚本的性能(2)

作者:海啸 来源:海啸的地盘 时间:2008-02-19 21:47:00 

类型转换

类型转换是大家常犯的错误,因为JavaScript是动态类型语言,你不能指定变量的类型。

1. 把数字转换成字符串,应用"" + 1,虽然看起来比较丑一点,但事实上这个效率是最高的,性能上来说:
("" +) > String() > .toString() > new String() 这条其实和下面的“直接量”有点类似,尽量使用编译时就能使用的内部操作要比运行时使用的用户操作要快。

String()属于内部函数,所以速度很快,而.toString()要查询原型中的函数,所以速度逊色一些,new String()用于返回一个精确的副本。

2. 浮点数转换成整型,这个更容易出错,很多人喜欢使用parseInt(),其实parseInt()是用于将字符串转换成数字,而不是浮点数和整型之间的转换,我们应该使用Math.floor()或者Math.round()。

另外,和第二节的对象查找中的问题不一样,Math是内部对象,所以Math.floor()其实并没有多少查询方法和调用的时间,速度是最快的。

3. 对于自定义的对象,如果定义了toString()方法来进行类型转换的话,推荐显式调用toString(),因为内部的操作在尝试所有可能性之后,会尝试对象的toString()方法尝试能否转化为String,所以直接调用这个方法效率会更高

使用直接量

其实这个影响倒比较小,可以忽略。什么叫使用直接量,比如,JavaScript支持使[param,param,param,...]来直接表达一个数组,以往我们都使用new Array(param,param,...),使用前者是引擎直接解释的,后者要调用一个Array内部构造器,所以要略微快一点点。同样,var foo = {}的方式也比var foo = new Object();快,var reg = /../;要比var reg=new RegExp()快。

字符串遍历操作

对字符串进行循环操作,譬如替换、查找,应使用正则表达式,因为本身JavaScript的循环速度就比较慢,而正则表达式的操作是用C写成的语言的API,性能很好。

高级对象

自定义高级对象和Date、RegExp对象在构造时都会消耗大量时间。如果可以复用,应采用缓存的方式。

标签:JavaScript,优化,性能
0
投稿

猜你喜欢

  • SQL中JOIN和UNION区别、用法及示例介绍

    2012-08-21 10:47:22
  • Asp中Server.ScriptTimeOut属性需要注意的一点

    2011-04-27 08:41:00
  • IE8的一些CSS hack

    2008-03-17 13:08:00
  • DHTML中重要的属性方法

    2008-06-21 17:13:00
  • 内容呈现的减法

    2007-11-16 16:22:00
  • 我的ImageMagick使用心得

    2008-10-21 11:05:00
  • oracle应用程序实现打包 的方法

    2009-03-02 10:32:00
  • 双屏显示提升前端开发10%工作效率

    2009-03-16 18:22:00
  • 网页超级链接加上快捷键方法

    2010-03-16 12:28:00
  • 后台程序开发常用jQuery插件

    2010-04-06 12:11:00
  • 判定IE的各个版本

    2010-01-19 14:01:00
  • sql server vs10安装之后一些列问题

    2012-01-05 19:22:41
  • ASP截取中英文字符串固定长度

    2009-08-19 17:12:00
  • 如何恢复/修复SQL Server的MDF文件

    2008-11-24 15:30:00
  • Oracle动态交叉表生成

    2010-07-27 12:55:00
  • Oracle数据库SQL语句性能调整的基本原则

    2009-03-25 16:55:00
  • asp如何用JMail同时给多人发信?

    2010-06-12 12:52:00
  • MySql循环插入数据

    2010-10-14 13:50:00
  • 解释FCKeditor样式的工作原理

    2007-10-11 13:34:00
  • 数字人组件反写[asp组件开发实例2]

    2009-06-09 13:15:00
  • asp之家 网络编程 m.aspxhome.com