JavaScript之编码规范 推荐


Posted in Javascript onMay 23, 2012

一、命名
1、应给变量和函数取一个含义确切的名称,不要随意命名。
2、非构造函数采用驼峰命名法,尽量采用动宾结构,以与变量名相区别,如getName或IsFull。构造函数(即自定义类型)名称首字母大写,以与非构造函数相区别,如Person。
3、变量采用驼峰命名法。由于JavaScript是一种弱类型语言,因此建议在变量名称前加前缀:整形(i),浮点数(f),布尔型(b),字符串(s),数组(a)。但不强制这么做,可根据个人爱好选择,选择好后就不要混用加前缀和不加前缀这两种方式了。

二、布局
1、空格。
a)var与变量名之间留一个空格,变量名与等号之间留一个空格,等号与初始值之间留一个空格,初始值与分号之间不留空格。如:var i = 10;
b)使用字面量方式声明引用类型变量时,各个属性与冒号之间不留空格,冒号与初始值之间留一个空格。如:

var Person = { 
age: 16, 
name: "Sam" 
};

c)function与函数名之间留一个空格,函数名与()之间不留空格,()与{之间留一个空格。
d)函数的各个参数之间留一个空格。
e)if、while、for与左括号之间留一个空格,以强调关键字;switch、with与左括号之间不留空格。
f) 二元操作符与左右两个操作数之间留一个空格。当某行代码较长时,也可不留空格。
2、换行。
a)每行语句占用一行,不要多个语句一行。
b)if、while、for等块级作用域后的大括号{不要另起一行,就放在关键字同一行。
3、缩进。
a)缩进使用4个空格,不要使用tab。
b)作用域不一样时就应当进行缩进,以显示出其层次关系。

三、注释
1、合理添加注释。注释不能完全没有,也不是越多越好。给重要的方法、变量和算法(或其他需要注意的问题)添加注释即可。
2、修改源代码时,需要同步修改注释,保持两者的一致。
3、不要在代码中使用html方式的注释。

四、规范
1、申明变量时必须加var关键字。虽然JavaScript允许不加var关键字,此时成为全局变量,但这是导致问题的一个来源。
2、申明变量时必须同时进行初始化,之后最好不要再改变变量的数据类型了。
3、语句末尾可以加分号的,必须加分号。
4、if、while、for等仅有一条语句时,也需要放在大括号内。
5、不要随意使用全局变量,如果不得不使用,最好只用一个全局变量。
6、JavaScript与html、css之间应保持松散耦合。html是数据层,css是表现层,JavaScript是行为层,三者应避免紧密的耦合,否则会导致后期难以维护。html中不要有具体的JavaScript代码,全部采用包含外部文件的方式;JavaScript中也尽量不要使用innerHTML等插入大量html元素,应考虑将元素放在html中,只不过初始隐藏即可;JavaScript中不要直接修改css中的具体属性,而应通过className来间接修改。
7、不要修改不是由你所有的对象,不给其实例或原型添加属性或方法,也不要重复定义其已有的方法。否则,当该对象的新版本添加了同名的属性或方法时,会导致潜在的难以察觉的问题。解决方案有两种:一是继承,二是包含。
8、使用命名空间来防止多个库之间的冲突,可参考YUI库的组织方式。
9、对于代码中出现的字面量,应将其放在某个变量的属性中,属性名首字母或所有字母大写(模拟其他语言中的define或enum)。如:

var Color = { 
RED: 1, 
BLUE: 2, 
GREEN: 3 
};

10、对函数中传入的参数进行检查。若为基本类型,使用typeof;若为引用类型,使用instanceOf;若要检查某个对象是否包含某个方法,则对该方法使用typeof操作符,并与字符串"undefined"比较。

五、性能
1、避免全局查找。使用全局变量和函数的开销要比使用局部变量和函数大,因为全局变量和函数涉及到作用域链的查找。因此,当函数中多次使用全局变量时,就会进行多次作用域链的查找,为了避免这个问题,可以将多次使用的全局变量赋值给一个局部变量,以后都使用该局部变量。
2、避免使用witch语句。with语句会创建自己的作用域,从而导致额外的开销。
3、避免属性查找。属性查找是一个O(n)操作,对象上的任何属性查找都比访问变量和数组花费更多时间(访问变量和数组是O(1)操作)。因此,如果多次用到同一个属性,则应将其保存在局部变量中。如:

var sUrl = window.location.href; 
var sData = sUrl.substring(sUrl.indexOf("?"));
Javascript 相关文章推荐
JS返回上一页实例代码通过图片和按钮分别实现
Aug 16 Javascript
在父页面调用子页面的JS方法
Sep 29 Javascript
javascript字母大小写转换的4个函数详解
May 09 Javascript
node.js中的fs.chownSync方法使用说明
Dec 16 Javascript
JavaScript判断数字是否为质数的方法汇总
Jun 02 Javascript
Json对象和字符串互相转换json数据拼接和JSON使用方式详细介绍(小结)
Oct 25 Javascript
AngularJS出现$http异步后台无法获取请求参数问题的解决方法
Nov 03 Javascript
JavaScript 栈的详解及实例代码
Jan 22 Javascript
浅谈VUE-CLI脚手架热更新太慢的原因和解决方法
Sep 28 Javascript
原生JS实现手动轮播图效果实例代码
Nov 22 Javascript
VUE 实现动态给对象增加属性,并触发视图更新操作示例
Nov 29 Javascript
vue组件创建的三种方式小结
Feb 03 Javascript
javascript的数据类型、字面量、变量介绍
May 23 #Javascript
网页源代码保护(禁止右键、复制、另存为、查看源文件)
May 23 #Javascript
通过js动态操作table(新增,删除相关列信息)
May 23 #Javascript
JavaScript基础语法让人疑惑的地方小结
May 23 #Javascript
利用javascript解决图片缩放及其优化的代码
May 23 #Javascript
JavaScript 图像动画的小demo
May 23 #Javascript
JavaScript学习笔记记录我的旅程
May 23 #Javascript
You might like
PHP编程网上资源导航
2006/10/09 PHP
PHP自动生成月历代码
2006/10/09 PHP
php方法调用模式与函数调用模式简例
2011/09/20 PHP
PHP伪静态Rewrite设置之APACHE篇
2014/07/30 PHP
用一段js程序来实现动画功能
2007/03/06 Javascript
dropdownlist之间的互相联动实现(显示与隐藏)
2009/11/24 Javascript
jQuery中的.bind()、.live()和.delegate()之间区别分析
2011/06/08 Javascript
jQuery实现仿QQ在线客服效果的滚动层代码
2015/10/15 Javascript
javascript中Date对象的使用总结
2016/11/21 Javascript
Vue.js系列之vue-router(上)(3)
2017/01/03 Javascript
详解nodejs微信公众号开发——6.自定义菜单
2017/04/13 NodeJs
vue.js中mint-ui框架的使用方法
2017/05/12 Javascript
jQuery 实现双击编辑表格功能
2017/06/19 jQuery
ui-router中使用ocLazyLoad和resolve的具体方法
2017/10/18 Javascript
使用JS实现导航切换时高亮显示的示例讲解
2018/08/22 Javascript
一步步教你利用Docker设置Node.js
2018/11/20 Javascript
详解如何理解vue的key属性
2019/04/14 Javascript
原生js实现二级联动菜单
2019/11/27 Javascript
nodejs如何在package.json中设置多条启动命令
2020/03/16 NodeJs
深入了解Vue.js 混入(mixins)
2020/07/23 Javascript
Python多线程学习资料
2012/12/19 Python
Python 实现购物商城,含有用户入口和商家入口的示例
2017/09/15 Python
Django框架视图函数设计示例
2019/07/29 Python
WxPython实现无边框界面
2019/11/18 Python
使用python实现画AR模型时序图
2019/11/20 Python
在pytorch中实现只让指定变量向后传播梯度
2020/02/29 Python
PyInstaller的安装和使用的详细步骤
2020/06/02 Python
python 用Matplotlib作图中有多个Y轴
2020/11/28 Python
欧姆龙医疗保健与医疗产品:Omron Healthcare
2020/02/10 全球购物
大学生实习期自我评价范文
2013/10/03 职场文书
中英文自我评价常用句型
2013/12/19 职场文书
文明礼仪小标兵事迹
2014/01/12 职场文书
司机岗位职责说明书
2014/07/29 职场文书
员工辞职信范文
2015/03/02 职场文书
2015年组织部工作总结
2015/04/03 职场文书
关于五一放假的通知
2015/08/18 职场文书