[关闭]
@TerryWan 2015-10-24T17:48:50.000000Z 字数 2604 阅读 1294

JS代码规范说明

JS即拿即用


编码格式

Javascript脚本文件编码格式统一使用UTF-8,使用Tab缩进,并且设置一个Tab符等于4个空格符。

引用

命名

1. 基本命名约束

===匈牙利命名法简化表格===

变量类型 简写示例
String 字符串 s 例:sWebURL
Array 数组 a 例:aCoinList
Number 数值(包括 Interger 和 Float) n 例:nUserCoin
Function 函数 f 例:fGetData
Object对象 o 例:oUserInfo
Regular Expression 正则表达式 r 例:rMsg

2. 文件命名

声明

1. 变量

在Javascript中,变量声明无论放在什么位置,都会被解析器置顶解析。另外置顶声明,一方面有利于代码管理,二来可减少重复声明变量引起不必要的问题。

  1. function createPerson() {
  2. //正确
  3. var name = 'A';
  4. var age = 20;
  5. console.log(str); //undefined
  6. if(age > 18) {
  7. //不推荐的写法,应在函数体内顶部声明!
  8. var str = 'You are adult already!';
  9. console.log(str);
  10. }
  11. }

2. 函数

虽然大多数JS引擎都支持块内声明函数,但它并不是 ECMAScript 标准的一部分(详见 ECMA-262, 第13条和第14条)。更糟糕的是各引擎对于块内函数声明的实现都不一样,和 EcmaScript 的建议相违背。

  1. if(x) {
  2. //不推荐的写法
  3. function test() {
  4. //code
  5. }
  6. }

语句

1. 分号

'''每一语句或函数表达式都要加上分号,且每一条语句要换行,变量声明除外。'''

如果不加分号JS解释器也会按隐式分隔的标准去执行,但那样调试、压缩、合并的时候容易造成很多不必要的问题。

  1. var method = function() {
  2. return 5;
  3. }
  4. (function() {
  5. // 一个匿名函数,在这里会被错误解析当作参数调用导致报错
  6. })();
  7. //这段程序执行时,浏览器会报错误提示:"TypeError: number is not a function"

2. 大括号

  1. //不推荐
  2. function method()
  3. {
  4. //code
  5. }
  6. //推荐的写法
  7. function method() {
  8. //code...
  9. }
  10. if (a) b(); c();
  11. //原意可能是:
  12. if (a) {
  13. b();
  14. c();
  15. }
  16. //实际就会变成
  17. if (a) {
  18. b();
  19. }
  20. c();

3. 字符串

单引号(')比双引号(")更好。

使用单引号(')比双引号(")更好,特别是当创建一个HTML代码的字符串时候:

  1. var msg = '<div class="text">This is some HTML</div>';

JSON对象

规范定义JSON对象,需补全双引号,它可以避免在编码过程中出现不必须要的错误。

  1. var data = {
  2. name: 'json' //不推荐的写法
  3. };
  4. var data2 = {
  5. "name": 'json' //推荐写法
  6. };

注释

1. 类的注释

对功能和类型的描述,还有一些参数和原型描述等信息。

  1. /**
  2. * 圆类.
  3. * @param {Number} x 圆的x轴坐标.
  4. * @param {Number} y 圆的y轴坐标.
  5. * @param {Number} r 圆的半径.
  6. * @constructor
  7. */
  8. function Circle(x, y, r) {
  9. this.x = x;
  10. this.y = y;
  11. this.r = r;
  12. }

2. 方法/函数的注释

应有参数和返回值的描述,且方法描述要以使用者的身份去写。

  1. /**
  2. * 获取圆的面积
  3. * @return {Number} 圆面积的值
  4. */
  5. function getArea() {
  6. return this.r * 2 * 3.14;
  7. }

3. 属性、变量和常量的描述

  1. /**
  2. * 圆周率常量
  3. * @type {Number}
  4. * @const
  5. */
  6. var PI = Math.PI;
  7. function Circle(x, y, r) {
  8. /* 圆的x轴坐标 */
  9. this.x = x;
  10. /* 圆的y轴坐标 */
  11. this.y = y;
  12. /* 圆的半径 */
  13. this.r = r;
  14. }
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注