JavaScript语法规范
1.变量:声明变量必须加上var关键字,而且每个var只声明一个变量,增加可读写
var name=‘李’;
var sex=‘男’;· (不推介:var name=‘李’ , sex=‘男’)
原因:当声明变量没有加var时,变量就会暴露在全局的上下文中,不仅很容易造成变量冲突,而且造成全局污染。
2.常量:常量的命名方式:用大写字母并且用下划线分隔,永远不要使用关键字const。
var MY_NAME=‘李’;
原因:IE不支持const
3.分号:总是使用分号
注意:JavaScript并不是在所有换行处都填补分号,只有在缺少了分号就无法解析代码的时候才会填补分号,(如果当语句和随后的非空格字符不能当做一个整体来解析时,JavaScript就在当前语句行结束处填补分号)
4.嵌套函数
可以使用、可以减少重复代码,隐藏帮助函数等好处。
5.块内函数声明
不要一个块内声明一个函数
6.异常处理
可以使用try{}、catch{}
7.缩进
用4个空格表示缩进,而不是tab健
原因:在不同的浏览器上,tab的缩进长度不一样
8.字符串过长截取
每行代码不超过80个字符,若代码过长,可使用+运算符拼接
原因:过长会导致需要拖动横向滚动条才能看到后面的代码,降低开发效率,而且在复制黏贴时可能错漏
9.大括号{}
区块起首的大括号,不要另起一行
推介:if (true){
}
不推介:if (true)
{
}
原因:JavaScript会自动添加句末的分号,容易导致一些奇怪的错误。
10.构造函数
对于构造函数首字母使用大写,其它都使用小写
原因:可读性,区分构造函数和普通函数
11.注解
合理的加上注解,有利于后期维护,提高可读性
12.{ }和[ ]
使用{ }代替new object( ),使用[ ]代替new Array( )
13.单引号
尽量使用单引号(‘’),在JOIN文件中使用双引号(“”)
14.变量和函数声明
变量名和函数名在JavaScript机制下会发生声明提升(也就是会提前到顶部声明),所以建议变量和函数应该在使用前声明
声明提前(变量提升):JavaScript引擎的工作方式是,先解析代码,获取所有被声明的变量,然后在一行一行的进行。造成的结果,就是所有变量的声明语句,都会被提升到代码的头部,这就是声明提前。(变量提升;hositing)
注意:变量提升只对var命令声明的变量有效,如果一个变量不是用var命令声明的,就不会发生变量声明。
变量作用域:全局变量:不在任何函数体内声明的变量。全局变量拥有全局作用域,在JavaScript代码的任意地方都是有定义的。
局部变量:在函数声明的变量,只在函数体内定义。
在函数体内,局部变量的优先级高于同名的全局变量。也就是说,如果函数内声明的局部变量或者函数参数中带有的变量和全局变量重名,那么全局变量就会被局部变量覆盖。
注意:在函数中使用var关键字进行显示声明的变量是作为局部变量,而没有用var关键字,使用直接赋值方式声明的是全局变量。
15.使用===和!==代替==和!=
在JavaScript中,比较运算符进行计算时会进行强制转换,==和!=会产生一些意想不到结果,所以应该使用“严格相等”===
16.换行
在语句块和下一个语句之间留一个空行,提高可读性。
17.命名
构造函数或类名使用驼峰式命名
18.嵌入规则
JavaScript程序尽量放在.js的文件中
19.命名规则
JavaScript中的标识符的命名规则: 1.以字母、下划线“-”或美元$符号开头
2.允许名称中包含字母、数字、下划线和美元符号
3.区分大小写
变量、属性、和函数名应该用驼峰式
私有函数用下划线开头
构造函数和类名应该用首字母大写
对象中私有变量和函数以下划线开头
20.语句
对于复合语句,if、for、while、do、switch、try、catch等代码体,函数定义的函数体,对象的定义等都需要放在花括号“{ }”里面
注意:1.{ 应在行末,标志代码块的开始
2.} 应在一行的开头,表示代码行的结束,同时需要和‘{’所在行的开始对齐,以表明一个完整的复合语句段。这样可以极大的提高代码的可阅读性,控制逻辑能清晰的表现出来
3.被包含的代码段应该再缩进4个空格
4.即使被包含的代码只有一句,也应该用花括号“{ }“包含。尽管不用花括号代码也不会出错,但如果要增加代码语句的话,则较容易因花括号遗漏而引起编译错误或逻辑错误。
return语句在使用时也注意,如果用表达式的执行作为返回值,应该把表达式和return放在同一行中,以免换行符被误解析为语句的结束而引起返回的错误。
return关键字后若没有返回表达式,则返回undefined,构造器的默认返回值为this
21.方法链(调用链)
如果使用方法链,应该每行只调用一个方法
Animal
getname()
getfirstname()
22.使用三元运算符
三元运算符不应该在一行,应该分隔成多行代替
推介:var foo=(a===b)
?1
:2;
不推介:var foo=(a===b)?1 :2;
23.逗号对于数组和对象不要使用多余的 逗号“,”
不推介:var rra=[1,2,]
var person={
name:'TG'
};
原因:IE不兼容
24.for-in
对于数组尽量避免使用 for-in