Javascript 编码规范

  前阵子同个小伙伴一起编码,两个人的 Javascript 代码风格各异,混在一起着实难看。于是我从网络和书籍收集整理了部分编码规范资料,总结如下

一、tab缩进

  tab键用四个空格代替,这是为了保证在所有环境下获得一致展现
 

二、分号

  总是使用分号,虽然 Javascript 支持换行作为语句界限,自动在语句末尾添加分号。但是在 "(" ,"[" ,"/" ,"+" ,"-" 后面,Javascript将不对上一行句尾添加分号
 

三、括号

  1、大括号跟着关键字后面
 
   正确书写:
  function test() {
      ...
  }

    错误书写:

  function test()
  {
       ...
  }

  2、调用函数时函数名和左括号之前没有空格,声明函数时函数名与参数之间没有空格,匿名函数'function'与左括号之间没有空格,其它情况,其它语法元素和左括号之间有一个空格

   正确书写:

  test(a, b);
  function test(a, b) {
      ...
  }
  Test.prototype.getName = function() {
      ...
  };

    错误书写:

  test (a, b);
  return(a+b);
  if(a === b) {
      ...
  }
  function test (a, b) {
      ...
  }
  Test.prototype.getName = function () {
      ...
  };

四、引号
  Javascript中单引号和双引号没有什么语义区别,BYVoid在《Node.js开发指南》中建议使用单引号,“因为JSON、XML都规定了必须是双引号,这样便于无转义地直接引用”

五、变量、属性、常量、类

  1、变量、属性命名使用小驼峰命名法

   正确命名:

    var testName = 'test';

   错误命名:

    var TestName = 'test';
    var test_name = 'test';

  

  2、确保每个语句定义一个变量,不用逗号隔开

   正确命名:

    var test;
    var temp;

    错误命名:

    var test, temp;

  

  3、避免使用全局变量,使用 "var" 定义变量,因为没写 "var" 隐式定义是全局变量,可能会和现有变量冲突,也不明白变量的作用域是什么。若使用全局变量用大写字母、单词以"_"分割表示,比如 "TEST_NAME = 'test'"

 

  4、常量也使用全大写、单词以 "_" 分割命名方法,比如 "TEST_URL = 'http://www.test.com/test'"

  5、普通的函数命名使用小驼峰命名,但是类要用大驼峰命名法;规定函数名与参数之前无空格,参数表和大括号之前要有一个空格,并在同一行

   正确书写:

    function Test() {
        this.name = 'test';
    }

    function testFunction() {
        return 'test';
    }

   错误书写:

    function test_function() {
        return 'test';
    }

    function test() {
        this.name = 'test';
    }

六、等号
  使用 '===' 而不是 '==',因为 '==' 包含隐式转换,会出现预想不到的结果

    var num1 = 1;
    var num2 = '1';
    if (num1 == num2) {
        console.log('true');
    } else {
        console.log('false');
    }

   以上代码将输出 'true',若把 '==' 改为 '===',输出 'false'

七、区块
  建议总是使用大括号表示块

   建议书写:

    if (true) {
        console.log('true');
    }

   不建议书写:

    iftrue)
        console.log('true');

八、对象定义
  成员函数通过原型定义,属性在构造函数内定义

   正确书写:

    function Person(name) {
        this.name = name;
        this.friends = ['Tom', 'Jack', 'Mike']; 
    }
    Person.prototype.output = function() {
        console.log(this.friends);
    };

   错误书写:

    function Person(name) {
        this.name = name;
        this.output = function() {
            console.log(this.friends);
        };
    }
    Person.prototype.friends = ['Tom', 'Jack', 'Mike'];

九、继承
  不推荐继承,若需要继承用成熟的类库继承

 

  有什么建议或者有什么错误,欢迎指出!

参考资料

1、http://www.ruanyifeng.com/blog/2012/04/javascript_programming_style.html

2、http://www.cnblogs.com/hustskyking/p/javascript-spec.html

3、http://alloyteam.github.io/JX/doc/specification/google-javascript.xml

4、《Node.js开发指南》

原文地址:https://www.cnblogs.com/stwzhong/p/3727881.html