写在前面
新司机最近读完《编写可维护的JavaScript》,学到不少东西。书分为编程风格、编程实践、自动化三个部分。其中编程风格是你的代码格式约定,统一的格式不仅仅有利于团队,也有助于提高新司机的代码质量和程序的可维护性。编程风格并不是绝对的,每个人或团队都有自己的编程风格,但知道哪些地方需要注意的话,还是有助于新司机完成代码风格的转变。
第1章 基本的格式化
1.1 缩进:制表符统一tab缩进或空格缩进,不能混用
1.2 语句结尾不省略分号
// 错误的例子
var x = 5
(function(){
alert("不要省略分号");
})();
1.3 单行长度:80字符以内,长字符用“+”分割
1.4 拆分换行:两个制表符缩进,打断点在符合后
1.5 空行,添加空白行区分代码块
每个流程控制语句(if,while,for...)之前
在方法定义之间
方法中局部变量和第一条语句之前
多行或单行注释之前
方法内逻辑片段之间
1.6 命名:
变量和函数,遵守驼峰大小写命名法,变量前缀为名词,函数前缀为动词,常见约定:can/has/is返回一个布尔值
常量:使用大写字母和下划线来命名
构造函数:首字母大写的驼峰命名法
var setValue = function(){},
getValue = function(){},
isEmpty = false,
CONST_VALUE, // 常量
ConstructFunction; // 构造函数
1.7 直接量:
字符串:统一使用双引号,多行字符串由『+』连接
-
null使用场景:将它当作占位符
初始化可能赋值对象的变量
与一个已经初始化的变量比较
当函数的参数期望是对象时,用作参数传入
返回值期望是对象时,用作返回值
null不适合场景:不用null检测是否传入参数
禁用undefined
对象直接量初试化数组或对象
var arr = [1, 2, 3, 4],
obj = {key1: value1, key2: value2}
第2章 注释
2.1 单行注释:
用来解释下一行代码,注释前有一个空行,缩进与下一行一致
代码尾部注释,代码与注释间至少有一个缩进,超过字符限度则应放在代码上方
2.2 多行注释:
注释前有一个空行,缩进与下一行一致
2.3 注释的使用:代码不够清晰时添加注释
难以理解的代码
可能被误认为错误的代码
浏览器特性hack
文档注释:为如下内容添加注释,所有方法的功能、期望参数和返回值、构造函数自定义类型和期望参数
第3章 语句和表达式
3.1 花括号对齐方式:左括号放在第一句末尾,右括号放在代码后一行
3.2 括号语句间隔:左括号之前,右括号之后添加空格
3.3 switch不漏掉break
3.4 避免使用with
3.5 for中避免使用continue
3.6 for-in使用 hasOwnProperty()方法遍历实例属性,for-in用来遍历对象,不要用来遍历数组
第4章 变量、函数和运算符
4.1 变量声明:将局部变量集中放在函数内部第一条,var合并为一个,初始化独占一行放前面,没初始值的放在后面。
var node1 = null,
node2 = null,
msg = "",
i, len;
4.2 函数声明:先声明再使用,函数声明不应该出现在流程控制语句块之内。
// 错误实例,函数提升使程序不会像想象中的那样运行
if(document.getElementsByClassName("cls")){
function getClass(){ // someCode }
} else {
function getClass(){ // someCode }
}
// 函数提升后,可以看成是
function getClass(){ /* someCode */ }
function getClass(){ /* someCode */ }
if(document.getElementsByClassName("cls")){
} else {
}
4.3 函数调用:函数名与括号间不加空格
4.4 匿名函数立即调用:使用括号包裹起来,或添加注释
4.5 严格模式:在函数体内使用,而不要在全局作用域使用
4.6 相等:应该使用 === 和 !== ,能够避免强制类型转换,禁止直接使用原始类型
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。