zoukankan      html  css  js  c++  java
  • 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开发指南》

  • 相关阅读:
    [悟]你为什么想创业
    [悟] 因上努力,果上随缘
    自己写个多任务多线程断点下载框架
    大道甚夷,而人好径
    [经验帖]外包如何定价
    python 基础语法
    python 中文编码问题
    python的运行机制和版本区别
    [转]linux 调用动态库so文件
    shell join详解
  • 原文地址:https://www.cnblogs.com/stwzhong/p/3727881.html
Copyright © 2011-2022 走看看