高效率JavaScript编写技巧

标签: javascript 技巧 | 发表时间:2013-08-22 23:57 | 作者:zhaoxy2850
出处:http://blog.csdn.net
最近在编写一个JavaScript框架,发现有很多细节注意得不够,担心长时间积累会导致框架实际应用的时候出现严重的效率问题。于是开始关注JavaScript提高效率的一些技巧,在这里分享给大家。

1.JavaScript是唯一一个对代码体积要求越小越好的语言,因此我们可以通过一些工具来精简和压缩JavaScript代码,如JSMin、Packer、YUICompressor等。这些工具会将局部变量的名字替换成很短的变量名,例如将parseFloat()替换成a()。因此我们在编写JavaScript代码时,应将每一个全局变量都映射到一个局部变量,如var parseFloat = parseFloat;

2.通过 JSLint来检测你编写的JavaScript,可以发现里面隐藏的很多问题。JSLint是一个JavaScript验证工具(非开源),可以扫描JavaScript源代码来查找问题。如果JSLint发现一 个问题,JSLint就会显示描述这个问题的消息,并指出错误在源代码中的大致位置。

3.我们在写JavaScript的时候经常需要遍历一个数组,代码如下:
for (var i=0;i<array.length;i++){
    //do something
}

JavaScript的成员变量是运行时确定的,这就导致每一次循环都需要查找数组length属性,因此我们可以增加一个变量来存储数组大小:
var l = array.length;
for (var i=0;i<l;i++){
    //do something
}

这样看起来已经优化得不错了,但实际上我们可以做得更好:
var i=array.length;
while(i--){
    //do something
}

这是因为这两行代码转换成汇编时,while语句所需的指令更少,在这里就不展开说明了,大家有兴趣可以去研究下汇编。

4.由于JavaScript中任何人都可以修改或添加Object.prototype中的属性,因此我们在遍历一个对象的属性时,应先使用hasOwnProperty进行判断,避免遍历整个原型链,影响效率。如:
for (var key in obj) {
    if (obj.hasOwnProperty(key)) {
        //do something
    }
}

5.在使用undefined的时候先定义一个局部变量undefined
var checkVal = function(val) {
    var undefined;
    return val !== undefined;
};
上述代码中,如果没有提前定义局部变量,直接使用全局变量undefined进行判断,如果第三方在别的地方定义了一个全局变量undefined=3将导致结果错误。

6.在将一个非字符串类型的变量转换成字符串类型时,可以直接使用
var str = (i + "").replace(...);

这个地方如果使用String(i)会慢很多。

7.定义数组的时候如果不需要使用数组类的排序等方法,只是进行一般的赋值和访问,应该直接写
var array = {};
而不是
var array = new Array();
否则这就和定义一个数字变量时写var i = new Number(1)一样没有意义

其余的技巧还有使用DocumentFragment优化多次append,使用firstChild和nextSibling代替childNodes遍历dom元素等。
具体大家可以参考这篇博客: http://www.nowamagic.net/librarys/veda/detail/363

转载请注明出处,谢谢!

作者:zhaoxy2850 发表于2013-8-22 23:57:33 原文链接
阅读:76 评论:0 查看评论

相关 [javascript 技巧] 推荐:

javascript技巧

- - ITeye博客
oncontextmenu="window.event.returnValue=false"  将彻底屏蔽鼠标右键. < table border oncontextmenu=return(false)>< td>no< /table>  可用于Ta bl e. < body onselectstart="return false">  取消选取、防止复制.

javaScript高级技巧

- - JavaScript - Web前端 - ITeye博客
注意: uncaught refereceError:is not defined 和 undefined 不是一样. js是函数级作用域,在内部的变量,函数内部都能访问,函数外部不能访问函数内部的变量,函数内部能访问外部的变量. 注意:在函数里声明变量,都会提到函数的最前面. 如何可以在函数外部拿到函数内部的变量,就需要使用闭包(注意使用,闭包会造成内存泄露).

JavaScript的一些技巧

- - Web前端 - ITeye博客
主要列举了使用JavaScript时应该注意的一些技巧. 1 变量使用前,需要使用var关键字声明,避免使用全局变量;. 2 尽量使用===(!==),而不用==(!=);.    ===(!==)操作不执行转换,在速度上被认为优于==(!=). 3 使用闭包实现私有变量;. 4 语句结尾不省略分号;.

[小技巧] JavaScript Cross Browser Best Practices

- - 小惡魔 - 電腦技術 - 工作筆記 - AppleBOY
我們來看看 Javascript 的小技巧. 不要再使用 navigator.userAgent. 簡單來說 Canvas 在 IE9 才有支援,所以針對 IE 部份,我們使用 navigator.userAgent 來判斷. 但是如果遇到 Safari, Chrome, Android, IPad, IPhone 版本呢,也很好解決,就是一直些判斷式,那為什麼不換個角度去想,直接判斷有無 Cnavas 功能即可,透過 Modernizr 套件可以簡單做到.

高效率JavaScript编写技巧

- - CSDN博客Web前端推荐文章
最近在编写一个JavaScript框架,发现有很多细节注意得不够,担心长时间积累会导致框架实际应用的时候出现严重的效率问题. 于是开始关注JavaScript提高效率的一些技巧,在这里分享给大家. 1.JavaScript是唯一一个对代码体积要求越小越好的语言,因此我们可以通过一些工具来精简和压缩JavaScript代码,如JSMin、Packer、YUICompressor等.

原生JavaScript技巧大收集

- - JavaScript - Web前端 - ITeye博客
1、原生JavaScript实现字符串长度截取. 2、原生JavaScript获取域名主机. 3、原生JavaScript清除空格. 4、原生JavaScript替换全部. 5、原生JavaScript转义html标签. 6、原生JavaScript还原html标签. 7、原生JavaScript时间日期格式转换.

【转载】最新的Javascript和CSS应用技巧荟萃

- - HTML5研究小组
随着前端技术的发展, javascript和 css在网站和web应用中展现出强大的统治力,特别是随着HTML5和CSS3的标准的成熟,我们可以使用javascript和css开发出你想都没有想到过的特效和动画,在今天的这篇文章中,我们将介绍一组相关CSS和javascript的强大教程和插件,希望大家喜欢.

今天开始应该使用 5 个JavaScript调试技巧

- - SegmentFault 最新的文章
我之前使用过用 printf debugging,自此之后我用这种方法似乎总能更快地解决bug. 在某些情况下需要更好的工具,下面是其中的一些佼佼者,我敢肯定你会发现它们的有用之处:. 正如我 之前提到的,你可以使用“debugger;”语句在代码中加入强制断点. 有时DOM像有了自己的想法.

JavaScript编程注意事项、技巧大全

- - SegmentFault 最新的文章
收藏自 JavaScript奇技淫巧45招. JavaScript是一个绝冠全球的编程语言,可用于Web开发、移动应用开发(PhoneGap、Appcelerator)、服务器端开发(Node.js和Wakanda)等等. JavaScript还是很多新手踏入编程世界的第一个语言. 既可以用来显示浏览器中的简单提示框,也可以通过nodebot或nodruino来控制机器人.

Javascript诞生记

- Milido - 阮一峰的网络日志
二周前,我谈了一点Javascript的历史. 今天把这部分补全,从历史的角度,说明Javascript到底是如何设计出来的. 只有了解这段历史,才能明白Javascript为什么是现在的样子. 我依据的资料,主要是Brendan Eich的自述. "1994年,网景公司(Netscape)发布了Navigator浏览器0.9版.