首页 > 代码库 > JavaScript基础JavaScript的常用编码惯例(007)

JavaScript基础JavaScript的常用编码惯例(007)

采用一定的编码惯例,可以使得项目中的代码提到较高的一致性,可读性和可预测性。

1.缩进
缩进可以提高代码的可读性。不过错误的缩进也可能导致代码的误读。有人认为缩进应该使用tab,另外的一些人主张采用4个空格。4个空格的缩进目前是主流的做法。简单地说,对于所有花括号中的代码(包括do, while, for, for-in, if, switch, 以及对象声明中的对象属性)都应该缩进4个空格。下面是一个缩进的例子:

function outer(a, b) {
var c = 1, d = 2, inner; if (a > b) { inner = function () { return { r: c - d }; }; } else { inner = function () { return { r: c + d }; }; } return inner;}

 2. 花括号
  对于循环体和if语句的内容只有一行的时候,花括号是可以省略的,但一个好的习惯应该总是加上花括号:

  // bad practice for (var i = 0; i < 10; i += 1)    alert(i);    alert(i + " is " + (i % 2 ? "odd" : "even"));

所以我们建议总是加上花括号:

for (var i = 0; i < 10; i += 1) {    alert(i);}

 对于if语句来说也是这样的:

 

 // badif (true)    alert(1);else    alert(2);// betterif (true) {    alert(1);} else {    alert(2);}

 

3. 左边花括号的位置
有人喜欢把左边花括号放在与上一行,有人喜欢另开一行:

if (true) {    alert("It‘s TRUE!");}//or:if (true){    alert("It‘s TRUE!");}

 上面的代码都没有任何问题,两种形式可以按个人喜好任先一种。但如果函数的返回值是一个对象,就要小心了:// warning: unexpected return value

function func() {    return    {        name: "Batman"    };}

 如果你期望上面的代码能返回一个对象,那结果可能会出乎意料。因为上面的函数返回的是undefined。因为那个没有加分号的return对于JavaScript的解释器来说看起来是这样的:// warning: unexpected return value

function func() {      return undefined;      // unreachable code follows...      {          name: "Batman"      };}

 所以,我们应该总是把第一个花括号放到上一行的结束处:

function func() {    return {        name: "Batman"    };}

 4. 空格
空格应该让代码更易读,所以应该放置空格的地方有很多:
   在for循环语句中里的分号后面: for (var i = 0; i < 10; i += 1) {...}
   for语句要初始化多个变量时也是如此:for (var i = 0, max = 10;i < max; i += 1) {...}
   数组定义时的逗号后面:var a = [1, 2, 3];
   定义对象属性的冒号后面和逗号后面:var o = {a: 1, b: 2};
   函数参数列表中的逗号后面: myFunc(a, b, c)
   函数声名中的花括号前面: function myFunc() {}
   当声名匿名函数时,function关键字后面:var myFunc = function () {};

总之,空格应该让代码能呼吸:

// generous and consistent spacing// makes the code easier to read// allowing it to "breathe"var d = 0,    a = b + 1;if (a && b && c) {    d = a % c;    a += d;}// antipattern// missing or inconsistent spaces// make the code confusingvar d= 0,    a =b+1;if (a&& b&&c) {d=a %c;    a+= d;}

 5. 构造函数的函数名要大写首字母
JavaScript没有“类”的概念,但可以声名能用new调用的构造函数:

var adam = new Person();

这种构造函数不象Java或C,要放在类的定义中,因此它和其它的函数看起来是一样的。要区分构造函数,可以把函数名的首字母大写:function MyConstructor() {...}

function myFunction() {...}

 后面我们还会介绍如何让一个函数用起来时表现得象个构造函数(而不是一般函数)。但通过首字母大定,可以有效区别它们。

6. 区分标识符中的单词

对于函数名中的单词,应该用驼峰式(camel case)的大小写。如:myFunction(),calculateArea() 以及 getFirstName()。
对于变量,或是对象的属性,则应该用下划线的形式:如:first_name, favorite_bands, old_company_name。
对于常量,应该用全大写的形式:

// precious constants, please don‘t touchvar PI = 3.14,    MAX_WIDTH = 800;

 对于对象中的私有属性和方法,则在它们前面加上下划线:

var person = {    getName: function () {        return this._getFirst() + ‘ ‘ + this._getLast();    },    _getFirst: function () {        // ...    },    _getLast: function () {        // ...    }

在上面的代码中,getName没有加下划线,意思是public的方法,而加了下划线的_getFirst和_getLast则是私有的方法。 

 

JavaScript基础JavaScript的常用编码惯例(007)