这几天看了几篇博文及关于Javascript程序编码规范的文章,我对其发表一下我个人的看法,如果有不对的地方或者有缺陷的地方,欢迎大家博友指出,我虚心接受。也欢迎广大博友提出不同的看法与建议。
一、命名规范。
1、一般变量及函数的命名
一般才用类似匈牙利命名法,都以首写字母为小写字母开始,函数或者方法采用“动名词组合”的方式。比如:
var strName = ‘张三’; //定义一个名字的字符串变量
function getName () {
return “张三”;
}
//上述定义一个函数,该函数的作用是返回名字字符串。
函数名为什么采用首写字母为小写——主要与Javascript内置方法函数保持一致性。因为他都是这样命名。
2、全局变量的命名
请加前缀 “g_” 来表示全局。至于要不要是 “var”关键字来声明,本人想法是最好是使用。因为使用与不使用“var”关键字的区别是:不使用的话,可以使用”delete“ 将该全局变量删除。如果使用”var“关键字后,就无法删除。我是这样认为,,既然我要声明一个全局变量,那一定是希望该变量的生命周期与我们程序的生命周期应该是相同的,所以我们不需要去删除该全局变量。所以我建议定义全局变量时,使用关键字”var“。例如:
var g_nCount = 0; //定义一个计数的全局变量
3、常量的命名
请全部使用大写字母来命名,并且每个单词之间请使用“_”来连接。例如:
var PROTOCOL_TYPE_UDP = "UDP"; //定义一个协议类型是UDP的常量。
4、类的命名
请加前缀“Cls”来表示该声明是类的声明,因为Javascript编程中类声明与函数的声明有点相似,为了区分是类还是方法,所以在类的前加入“Cls”来表示是类的声明。例如:
function ClsPerson(options) {
this.name = options.name;
}
5、JQuery对象变量的命名
请加前缀美元符“$”,来表示是JQuery对象变量。例如:
var $sidebar = $('.sidebar');
二、书写规范
1、声明的书写
连续声明多个变量的书写,有些博文上说,最好是一个“var”关键字,其他用逗号“,”隔开,并且换行的的形式声明,也有博文说,一个变量一个“var”声明变量,这样条理更加清晰。我也是支持后面那种模式,一个变量一个“var”的模式,这样也不用考虑未赋值的变量的位置问题。(注:使用一个“var”来声明时,博文中说最好将有赋值的变量放在未赋值的变量之前。)列如:
(1)一个“var”模式
var strName = "zhangsan",
nCount = 1,
strAddress;
(2)一个变量一个var模式
var strName = "zhangsan";
var nCount = 1;
var strAddress;
相比之下,我更加青睐于下面这种模式,条理更加清晰。
2、if,for,while等一些使用大括号“{”的书写
大括号“{”最好紧跟if,for,while后,例如:
if (bIsLink) {
return "已连接";
}else {
return "未连接";
}
主要防止在if后添加了“;”这个符号,操作程序有bug。
3、注释的书写
单行请用“//”的形式,如果是多行请用"/* */"的形式。这样可以更好维护代码。
4、方法或者函数内变量的声明的书写
一个方法或者函数内,不要现在同名的变量,不管你在方法或者函数中if,while,for语句中声明的变量都不要同名的。因为Javascript编程会将你在方法或者函数中的变量声明全部提前到方法或者函数头处。【这也是一般Javascript程序员的理解,但是没有相关官方文件说明】,因为这样方法中可以先使用变量后声明(这里不推荐这样的写法)不利于维护。这里推荐的写法有两种,一,将全部变量在方法一开始处全部声明。二,用到一个声明一个,不过最好检查一下你命名的变量名是否在本方法中已经存在【很重要】。
5、对象,数组的创建的书写
<pre name="code" class="javascript">var obPerson = {};
var arrScore = [];
以上的创建的方法是大家博文中推荐的,但是我不知道为什么推荐这样书写,为什么不直接使用下面的方式:
var obPerson = new Object();
var arrScore = new Array();
是不是因为下面的方式调用对象的构造函数,所以会影响效率。我还在考证中。望大家博友知道的可以留言,告知,分享你的成就。
今天就先整理到这里,后续继续更新。
【注】:上述二大点中的第4小点,这里补充说明一下并对其错误说法做一次修正:上述说“Javascript编程会将你在方法或者函数中的变量声明全部提前到方法或者函数头处”这句话是错误的,但是Javascript程序员可以这样理解。真正的原理是因为Javascript代码程序有两个过程[1是预加载期,2是运行期],但是好多Javascript程序员都认为它只有一个过程就是运行期。(这里扯远了,回归正题)而Javascript代码在预加载期做什么事呢?预加载的目的是要事先构造运行环境例如全局环境,函数运行环境,还要构造作用域链,而环境和作用域的构造的核心内容就是指定好变量属于哪个范畴。所以说可以理解上上述看法。如果还需要进一步了解Javascript代码的语法。请看我转载三篇谈谈Javascript代码语法。或者参考原文。原文地址如下:
1、http://www.cnblogs.com/sharpxiajun/p/4133462.html
2、http://www.cnblogs.com/sharpxiajun/p/4133984.html
3、http://www.cnblogs.com/sharpxiajun/p/4148932.html