JavaScript编码风格

比起制定什么样的规范,坚持遵守规范重要的多。

为什么要有规范

软件bug的修复极其昂贵,尤其是随着时间的推移,这些bug的成本会成倍增加。因此,无论是为了自己以后维护方便还是为了减少公司的维护成本,书写可维护的代码异常重要。

什么样才是可维护的代码**

1. 可读的
2. 一致的
3. 可预测的
4.  看上去像一个人写的
5. 已记录

如何做

缩进

关于缩进有人喜欢用空格,有人喜欢用tab,记住坚持一直使用同一种方式。

区块

  1. 总是使用大括号表示区块,不要出现类似:

    if(true)
    a();
    b();   
  2. 区块首部大括号的位置放在语句后面(这样可以避免return后自动添加分号带来错误),类似这样:

    block {     
    ...
    }       

圆括号

  1. 表示函数调用时,函数名与左括号之间没有空格。

    bar(arg);
  2. 表示函数定义时,函数名与左括号之间没有空格。

    function bar() {...}
  3. 其他情况时,前面位置的语法元素与左括号之间,都有一个空格。

    if (a+b) {...};
    return (key: value);

行尾的分号

  • 可以不用添加分号的情况

    1. for和while循环(但do .. while语句必须添加)
    2. 分支语句:if,switch,try
    3. 函数的声明语句
  • 其他情况都要加分号(javaScript解释引擎总会在你意想不到的时候添加分号)

空格

适合使用空格的地方包括:

  1. for循环分号分开后的的部分:如for (var i = 0; i < 10; i += 1) {...}
  2. for循环中初始化的多变量(i和max):for (var i = 0, max = 10; i < max; i += 1) {...}
  3. 分隔数组项的逗号的后面:var a = [1, 2, 3];
  4. 对象属性逗号的后面以及分隔属性名和属性值的冒号的后面:var o = {a: 1, b: 2};
  5. 限定函数参数:myFunc(a, b, c)
  6. 函数声明的花括号的前面:function myFunc() {}
  7. 匿名函数表达式function的后面:var myFunc = function () {};
  8. 使用空格分开所有的操作符和操作对象是另一个不错的使用,这意味着在+, -, *, =, <, >, <=, >=, ===, !==, &&, ||, +=等前后都需要空格.

全局变量

JavaScript最大的语法缺点,可能就是全局变量对于任何一个代码块,都是可读可写。这对代码的模块化和重复使用,非常不利。

因此,避免使用全局变量。如果不得不使用,用大写字母表示变量名,比如UPPER_CASE。

变量声明

  1. JavaScript会自动将变量声明”提升”(hoist)到代码块(block)的头部。

  2. 为了避免可能出现的问题,最好把变量声明都放在代码块的头部。

  3. 所有函数都应该在使用之前定义,函数内部的变量声明,都应该放在函数的头部

new 命令

new方法调用函数时会产生一个新对象,一旦忘记写new操作符,构造函数内的this就会执行全局对象,这样便增添了许多全局变量。

  1. 使用Object.create()代替new操作符。
  2. 将构造函数与其他函数区分开来。构造函数名称首字符大写。

with语句

不要使用with语句。

相等和严格相等

不要使用“相等”(==)运算符,只使用“严格相等”(===)运算符

语句的合并

不要随便合并

自增++和自减--运算符

建议自增(++)和自减(--)运算符尽量使用+=-=代替。

switch…case结构

建议避免使用switch...case结构,用对象结构代替。详情见JavaScript标准参考教程

(不)扩展内置原型((Not) Augmenting Built-in Prototypes)

自己手动扩展内置原型,无论是添加属性还是方法,都会给后期的维护带来麻烦。并且私自扩展的属性可能会导致不使用hasOwnProperty属性时在循环中显示出来,这会造成混乱。

参考:

JavaScript标准参考教程
深入理解JavaScript系列(1):编写高质量JavaScript代码的基本要点

猜你喜欢

转载自blog.csdn.net/Young_Light_Lu/article/details/79733541