你需要知道的10个最佳javascript开发实践小结


Posted in Javascript onApril 15, 2012

尽管很多的开发人员都乐于颂扬javascript,但是仍旧有人看到它的阴暗面。

使用很多javascript代码的web页面会加载很慢,过多的使用javascript使得网页丑陋和拖沓。很快如何有效地使用javascript成为一个非常火热的话题。

这里让我们列出10个最佳javascript实践,帮助你有效地使用javascript。

1. 尽可能的保持代码简洁
可能大家都听到过了N遍这个代码简洁问题了。作为一个开发人员你可能在你的代码开发过程中使用了很多次,但千万不要在js开发中忘记这点。

尽量在开发模式中添加注释和空格,这样保持代码的可读性
在发布到产品环境前请将空格和注释都删除,并且尽量缩写变量和方法名
使用第三方工具帮助你实现压缩javascript。
2. 思考后再修改prototypes
添加新的属性到对象prototype中是导致脚本出错的常见原因。

yourObject.prototype.anotherFunction = ‘Hello'; 
yourObject.prototype.anotherMethod = function () { … };

在上面代码中,所有的变量都会被影响,因为他们都继承于"yourObject"。这样的使用会导致意想不到的行为。所以建议在使用完后删除类似的修改。
yourObject.prototype.anotherFunction = ‘Hello'; 
yourObject.prototype.anotherMethod = function () { … }; 
test.anotherMethod(); 
delete yourObject.prototype.anotherFunction = ‘Hello'; 
delete yourObject.prototype.anotherMethod = function () { … };

3. Debug Javascript代码
即使最好的开发人员都会犯错。为了最大化的减少类似错误,请在你的debugger中运行你的代码,确认你没有遇到任何细微的错误

4. 避免Eval
你的JS在没有"eval"方法的时候也可以很好的工作。“eval”允许访问javascript编译器。如果一个字符串作为参数传递到"eval",那么它的结果可以被执行。

这会很大的降低代码的性能。尽量避免在产品环境中使用"eval"。

5. 最小化DOM访问
DOM是最复杂的API,会使得代码执行过程变慢。有时候web页面可能没有加载或者加载不完整。最好避免DOM。

6. 在使用javascript类库之前先学习javascript
互联网充斥着很多的javascript类库,很多程序员都往往使用js类库而不理解负面影响。强烈建议你在使用第三方类库之前学习基本的JS代码,否则,你就准备着倒霉吧。

7. 不要用"SetTimeOut"和"Setinterval"方法来作为"Eval"的备选
setTimeOut( "document.getID('value')", 3000);
在以上代码中 document.getID('value') 在"setTimeOut"方法中被作为字符串来处理。这类似于'eval'方法,在每个代码执行中来执行一个字符串,因此会降低性能,因此,建议在这些方法中传递一个方法。

setTimeOut(yourFunction, 3000);
8. []比"new Array();"更好
一个常犯的错误在于使用当需要数组的时候使用一个对象或者该使用对象的时候使用一个数组。但是使用原则很简单:

“当属性名称是小的连续整数,你应该使用数组。否则,使用一个对象” - Douglas Crockford, JavaScript: Good Parts的作者.

建议:
var a = ['1A','2B'];
避免:

var a = new Array();
a[0] = "1A";
a[1] = "2B";
9. 尽量不要多次使用var
在初始每一个变量的时候,程序员都习惯使用"var"关键字。相反,建议你使用逗号来避免多余的关键字,并且减少代码体积。 如下:

var variableOne = ‘string 1',
variableTwo = ‘string 2',
variableThree = ‘string 3';
10. 不要忽略分号 ";"
这往往是大家花费数个小时进行debug的原因之一。

我很确信你肯定也在其它的文章中阅读过以上相关的内容,但是大家可能往往都忽略了很多基本的规则。你是不是也曾经忽略过分号。是不是也遇到过eval关键字问题导致性能问题?希望大家能够喜欢,谢谢!

Javascript 相关文章推荐
基于jquery的固定表头和列头的代码
May 03 Javascript
基于jquery异步传输json数据格式实例代码
Nov 23 Javascript
取消选中单选框radio的三种方式示例介绍
Dec 23 Javascript
escape编码与unescape解码汉字出现乱码的解决方法
Jul 02 Javascript
JS随机打乱数组的方法小结
Jun 22 Javascript
js截取字符串功能的实现方法
Sep 27 Javascript
微信小程序自定义底部弹出框
Nov 16 Javascript
vue组件定义,全局、局部组件,配合模板及动态组件功能示例
Mar 19 Javascript
微信小程序+云开发实现欢迎登录注册
May 24 Javascript
vue swipe自定义组件实现轮播效果
Jul 03 Javascript
基于vue写一个全局Message组件的实现
Aug 15 Javascript
js实现拖拽元素选择和删除
Aug 25 Javascript
javascript针对DOM的应用分析(四)
Apr 15 #Javascript
javascript针对DOM的应用分析(三)
Apr 15 #Javascript
javascript针对DOM的应用分析(二)
Apr 15 #Javascript
javascript针对DOM的应用实例(一)
Apr 15 #Javascript
JavaScript中的null和undefined解析
Apr 14 #Javascript
dtree 网页树状菜单及传递对象集合到js内,动态生成节点
Apr 14 #Javascript
jquerymobile checkbox及时刷新才能获取其准确值
Apr 14 #Javascript
You might like
ThinkPHP3.1新特性之对Ajax的支持更加完善
2014/06/19 PHP
php策略模式简单示例分析【区别于工厂模式】
2019/09/25 PHP
30个精美的jQuery幻灯片效果插件和教程
2011/08/23 Javascript
Javascript处理DOM元素事件实现代码
2012/05/23 Javascript
JQuery调webservice实现邮箱验证(检测是否可用)
2013/05/21 Javascript
javascript圆盘抽奖程序实现原理和完整代码例子
2014/06/03 Javascript
JS实现表格数据各种搜索功能的方法
2015/03/03 Javascript
JavaScript实现点击按钮切换网页背景色的方法
2015/10/17 Javascript
nodejs个人博客开发第三步 载入页面
2017/04/12 NodeJs
Angular.js中数组操作的方法教程
2017/07/31 Javascript
vue项目中jsonp跨域获取qq音乐首页推荐问题
2018/05/30 Javascript
AngularJS与后端php的数据交互方法
2018/08/13 Javascript
Bootstarp在pycharm中的安装及简单的使用方法
2019/04/19 Javascript
Vue 实现CLI 3.0 + momentjs + lodash打包时优化
2019/11/13 Javascript
Python内置函数Type()函数一个有趣的用法
2015/02/18 Python
Python可变参数*args和**kwargs用法实例小结
2018/04/27 Python
Python图像的增强处理操作示例【基于ImageEnhance类】
2019/01/03 Python
对python中矩阵相加函数sum()的使用详解
2019/01/28 Python
Python3内置模块pprint让打印比print更美观详解
2019/06/02 Python
树莓派与PC端在局域网内运用python实现即时通讯
2019/06/22 Python
Python openpyxl读取单元格字体颜色过程解析
2019/09/03 Python
Python整数与Numpy数据溢出问题解决
2019/09/11 Python
python基于socket实现的UDP及TCP通讯功能示例
2019/11/01 Python
Python函数的定义方式与函数参数问题实例分析
2019/12/26 Python
Python实现大数据收集至excel的思路详解
2020/01/03 Python
Python字符串hashlib加密模块使用案例
2020/03/10 Python
keras.layer.input()用法说明
2020/06/16 Python
美国电视购物:QVC
2017/02/06 全球购物
瑞典的玛丽小姐:Miss Mary of Sweden
2019/02/13 全球购物
捷克建筑材料网上商店:DEK.cz
2021/03/06 全球购物
实习自我评价怎么写
2013/12/02 职场文书
公司中秋节活动方案
2014/02/12 职场文书
大学毕业生求职自荐书
2014/06/05 职场文书
综合测评自我评价
2015/03/06 职场文书
Python如何使用循环结构和分支结构
2022/04/13 Python
Elasticsearch 批量操作
2022/04/19 Python