4个空格缩进,最好统一tab为4个字符。
结尾分号
产生错误的例子
//原始代码
function getData() {
return
{
title:"Maintainable JavaScript",
author:"Nicholas C. Zakas"
}
//分析器会它理解
function getData() {
return;
{
title:"Maintainable JavaScript",
author:"Nicholas C. Zakas"
};
}
可以通过将左花括号移至与return同一行的位置来修复这个问题。
//这段代码工作正常,尽管没有用分号
function getData() {
return {
title:"Maintainable JavaScript",
author:"Nicholas C. Zakas
}
}
80个字符
通常我们会在运算符后换行,下一行会增加两个层级的缩进(8个字符)
例外:当给变量赋值时,第二行的位置应当和赋值运算符的位置保持对齐,例如
var result = something + antherThing + yetAnotherThing + somethingElse +
anotherSomethingElse;
驼峰命名法
驼峰式大小写命名是由小写字母开始的,后续每个单词首字母都大写。
变量名应当总是遵循驼峰小大写命名法,并且前缀是名词。以名词作为前缀可以让变量和函数区分开来,因为函数名前缀应当是动词。
//好的写法
var count = 10;
var myName = "Nicholas";
var found = true;
//不好的写法:变量像函数
var getCount = 10;
var isFound = true;
//好的写法
function getName() {
return myName;
}
//不好的写法:函数看起来像变量
function theName() {
return myName;
}
动词常见的约定
动词 | 含义 |
---|---|
can | 函数返回一个布尔值 |
has | 函数返回一个布尔值 |
is | 函数返回一个布尔值 |
get | 函数返回一个非布尔值 |
set | 函数用来保存一个值 |
在ECMAScript6,JavaScript中并没有真正的常量的概念。然而,为了区分普通的变量和常量,它使用大写字母和下划线来命名。
在JavaScript中,构造函数只不过是前面冠以new运算符的函数,用来创建对象。语言本身已经包含了很多内置构造函数,比如Object和RegExp,同样开发者也可以创建自己的构造函数来生成新类型。
//好的做法
function Person() {
this.name = name;
}
Person.prototype.sayName = function() {
console.log(this.name);
}
var me = new Person("Nicholas");
//合法的JavaScript代码
var name = "Nicholas says,\"Hi.\"";
//也是合法JavaScript代码
var name = 'Nicholas says."Hi"';
在这段代码中,在使用双引号括起来的字符串里需要对双引号进行转义,而在使用单引号括起来的字符串
里则不必如此。
null是一个特殊值,但我们常常误解它,将它和undefined搞混。在下列场景中应当使用null。
还有下面一些场景不应当使用null
- 不要使用null是否传入了某个参数。
- 不要用null来检测一个未初始化的变量。
示例代码
//好的用法
var person = null;
//好的用法
function getPerson() {
if (condition) {
return new Person("Nicholas");
} else {
return null;
}
}
//好的用法
var person = getPerson();
if (person !== null) {
doSomething();
}
//不好的写法:用来和未初始化的变量比较
var person;
if (person != null) {
doSomething();
}
//不好的写法:检测是否传入了参数
function doSomething(arg1,arg2,arg3,arg4) {
if (arg4 != null) {
doSomethingElse();
}
}
理解null最好的方式是将它当作对象的占位符。这个规则在所有的主流编程规范中都没有提及,但对于全局可维护性来说至关重要。
创建最流行的一种做法是使用对象直接量,在直接量上中直接写出所有属性,这种方式可以取代先显示地创建Object的实例然后添加属性的这种做法。
//不好的写法
var book = new Object();
book.title = "Maintainable JavaScript";
book.author = "Nicholas C. Zakas";
//好的写法
var book = {
title:"Maintainable JavaScript",
author:"Nicholas C. Zakas"
};
和对象直接量类似,数组直接量是JavaScript中定义数组最简洁的一种方式。
//不好的写法
var colors = new Array("red","green","blue");
var numbers = new Array(1,2,3,4);
//好的做法
var colors = ["red","green","blue"];
var numbers = [1,2,3,4];