• 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开发指南》

  • 相关阅读:
    读书记录
    npm install 安装nodesass报错,因为nodejs版本的问题
    jeecgboot修改前端vue页⾯包括vue页⾯传递参数和获取参数
    dedecms织梦调用日期格式大全
    JS数组中every(),filter(),forEach(),map(),some()方法学习笔记!转
    Where条件的in里面放太多数据导致很慢
    谷歌浏览器 F12打开控制台面板缓慢问题
    linux sqlserver数据库连接问题The server selected protocol version TLS10 is not accepted by client preferences[TLS12]
    使用Java语言搭建一个简易的局域网直播(live)系统
    SpringBoot整合aspectj实现面向切面编程(即AOP)
  • 原文地址:https://www.cnblogs.com/stwzhong/p/3727881.html
Copyright © 2020-2023  润新知