1、缩进 4个空格,避免用tab
2、行的长度 每行不超过80个字符,下一行增加两级缩进(8个字符)
3、原始值 字符串应当使用双引号 var name = "linfang"
数字使用十进制整数,科学计数法表示整数,十六进制整数,或者十进制浮点小数,小数点前后应当至少保留一位数字。避免使用八进制 var count = 10 10.0 不好的写法 .1
特殊值 null
var person = null
var person = gePerson()
if (person !== null) {
...
}
避免使用undefined.判断一个变量是否定义应当用typeof操作符
if (typeof variable == "undefined"){
}
4、运算符间距 二元运算符前后必须使用一个空格来保持表达式的整洁。操作符包括赋值运算符和逻辑运算符
var fonud = (values[i] === itrem)
if (found && (count > 10)) {
}
5、括号间距 紧接左括号之后和紧接右括号之前不应该有空格
6、对象直接量
属性值是函数类型,函数体应当在属性名之下另起一行,而且前后均应用保持一个空行
一些相关属性前后可以插入空行提升代码的可读性
var object = {
key1: value1,
key2: value2,
func: function() {
},
key3: value3
}
当函数字面量作为函数参数时,如果只是变量,起始花括号应当同函数名在同一行,所有其余先钱列出的规则同样适用 不好的写法,所有代码都在一行上
doSomething({
key1: value1,
key2: value2
})
7、注释
7.1 单行注释 7.2 多行注释
// 单行注释 在代码前,或者代码尾部注释
/*
- 多行注释
*/
7.3 注释声明
// TODO: 代码还未完成。应当包含下一步要做的事情。
// HACK: 代码实现走了一个捷径。应当包含为何使用hack的原因。也表明可能会更有更好的解决办法。
// XXX:说明代码是有问题的并应当尽快修复。
// FIXME:说明代码是有问题的并应尽快修复。重要性略次于XXX.
// REVIEW: 说明代码任何可能的改动都需要评审。
7.4变量声明
var count = 10,
name = "linfang",
found = false,
empty;
7.5函数声明
function doSomething(arg1, arg2) {
return arg1 + arg2
}
// 匿名函数可能作为方法赋值给函数
object.method = function() {
// 代码
}
// 立即被调用的函数应当在函数调用的外层用圆括号包裹
var value = (function() {
// funtion body
return {
meg: "hello"
}
}());
7.6命名 仅限于数字字母字符,驼峰命名
// 变量名第一个单词应当是一个名词,避免同函数混淆,不要在中间使用下划线__;
var account = "900"
// 函数命名采用驼峰格式,函数名第一个单词应当是动词,不使用下划线;
function doSomething() {
}
// 构造函数-通过new运算符创建新对象的函数,用驼峰命名并且首字符大写,非动词开头;
function MyObject() {
}
// 常量的命名应当是所有字母大写,单词直接用下划线隔开
var TOTAL_COUNT = 10
// 变量的属性同变量的命名规则相同,对象的方法同函数命名规则相同,如果属性和方法是私有的,应当在之前加一个下划线
var object = {
_count: 10,
_getCount: function() {
return this._count;
}
}
7.7严格模式 仅限在函数内部使用,千万不要在全局使用
function() {
// use strict;
function doSomething() {
}
}());
7.8 赋值 给对象赋值时,右侧是含有比较语句表达式,需要用圆括号包裹
var flag = (i < count)
7.9 等号运算符 使用严格相等===和严格不相等!==来避免弱类型转格式错误
7.10 三元运算符应当仅仅用在条件赋值语句中,而不要作为if语句的替代品
var value = condition ? value1 : value2
7.11 语句 简单语句 每一行最多只包含一条语句。所有简单的语句都应该以分好;结束。 返回语句 当返回一个值的时候不应该使用圆括号包裹,除非在某些情况下这么做可以让返回值更容易理解。 复合语句
count++;
a = b;
// if语句中不允许使用花括号
if (condition) {
statements
} else {
statements
}
// for 语句的初始化部分不应当有变量声明
var i,
len;
for (i=0, len=10; i < len; i++) {
}
// while语句
while (condition) {
statements
}
// do语句
do {
statements
} while (condition);
// switch 语句
switch (value) {
case 1:
doSomething();
break; // 每一组语句都应当以break,return,throw结尾,或者应一行注释表示跳过
case 2:
return true;
default:
// 如果不包含default情况,应当用一行注释代替。
}
// try 语句
try {
statements
} catch (variable) {
statements
} finally {
statements
}