JavaScript 代码规范

JavaScript 代码规范

本文翻译了 Mr.doob 提出的 JavaScript 代码规范,他是 Threejs 的作者,在他的开源项目中都是按照这个规范来要求的。按照这个规范书写代码时,要做到能使用空格的就要使用,用空行来分隔代码块的不同部分,整体感觉代码比较松散,缩放之后还能看得清楚。
原文地址

1、基本要求

  • 代码使用 UTF-8 字符集;
  • 代码换行使用换行符 \n
  • 缩进必须用 Tab
  • 每一行代码的末尾不能有空格,可以在编辑器设置代码保存时去空格。

备注:
换行符 \nLF:Linefeed ;回车符 \rCR:Carriage Return ;回车并换行 \r\n CRLF:Carriage Return & Linefeed 。
换行符的本意是换到新的一行,但是水平位置是不变的;回车符正好相反,本意是回到行首,但是垂直位置不变;只有回车并换行才是我们想要的,但是现在对这三种字符都当作回车并换行的意思。

2、命名规则

命名要尽可能有语义,只有循环中的变量可以使用单个字母,从 i 开始的字母。

  • 变量名用小驼峰,如: variableNamesLikeThis
  • 函数名用小驼峰;
  • 类名用大驼峰,如: ClassNamesLikeThis
  • 方法名用小驼峰;
  • 常量名用大驼峰(在其它规则中可能要求用大写字母);
  • 对象的私有属性和方法的名称开头加 _

3、字面量要求

对象字面量

创建对象字面量使用 {} ,不用使用 new Object() ,创建空对象时不要留空格。
当创建有属性和值的对象字面量时:

  • 在左边花括号后留一个空格;
  • 在右边花括号后留一个空格;
  • 属性名最好不加引号;
  • 冒号前面不要留空格,后面留一个空格;
  • 逗号前面不要留空格,后面留一个空格,必须跟在属性值后面;
  • 最后一个属性值不要加逗号;

正确示范:


var obj = { A: 1, b: 2, C: 3 };

var obj = {
    A: 1, 
    b: 2, 
    C: 3 
};

错误示范:


var obj = {A:1,b:2,C:3};

var obj = {A:1, b:2, C:3};

var obj = {A : 1, b : 2, C : 3};

var obj = { "A" : 1, "b" : 2, "C" : 3 };

var obj = { A : 1, b : 2, C : 3 };

var obj = { A :1, b :2, C :3 };

var obj = { A : 1 , b : 2 , C : 3 };

var obj = {
    A : 1, 
    b : 2, 
    C : 3, 
};

var obj = {
    A : 1 
  , b : 2
  , C : 3 
};

数组

创建数组使用 [] ,不要使用 new Array() ,空的数组不要留空格。
创建有元素的数组时:

  • 左边中括号后面留一个空格;
  • 右边中括号前面留一个空格;
  • 逗号前面不留空格,后面留一个空格,必须跟在元素后面;
  • 最后的元素后面不加逗号;

正确示范:


var arr = [ 1, 2, 3 ];

var arr = [
    1, 
    2, 
    3 
];

错误示范:


var arr = [1,2,3];

var arr = [1, 2, 3];

var arr = [ 1 , 2 , 3 ];

var arr = [
    1, 
    2, 
    3,
];

var arr = [
    1
  , 2
  , 3 
];

分号

始终记得加个分号。

4、代码块要求

  • 开头花括号后面留一个空行;
  • 结尾花括号前面留一个空行;
  • 开头花括号前面留一个空格,不要另起一行。

正确示范:


if ( a === 0 ) {

   // 这是正确的示范
   return true;

}


if ( a === 0 ) {
    // 这是错误示范:在 '{' 后面少了一个空行 
    return true;

}

if ( a === 0 ) {

    // 这是错误示范:在 '}' 前面少了一个空行 
    return true;
}

if ( a === 0 ) { // 这是错误示范:注释跟在 '{' 后面

    return true;

}

if ( a === 0 ){

   // 这是错误示范:在 '{' 前面没有留一个空格
   return true;

}

5、条件表达式

If 表达式

  • if 后面留一个空格,左边圆括号留一个空格;
  • 条件判断语句后面留一个空格,右边圆括号后面留一个空格;
  • 必须包含代码块;
  • else 要跟前面代码块的花括号在同一行,前后都留一个空格;
  • 条件判断语句中不能有赋值语句。

正确示范:


if ( test ) { 

    // ... 

} else { 

    // ... 

}

错误示范:


if (test) { 

    // ... 

}

if( test ) { 

    // ... 

}

if (test ) { 

    // ... 

}

if ( test) { 

    // ... 

}

if ( test ){ 

    // ... 

}

if ( test ) { 

    // ... 

}else { 

    // ... 

}

if ( test ) { 

    // ... 

} else{ 

    // ... 

}

Switch 语句

  • switch 后面留一个空格,左边圆括号后面留一个空格;
  • 条件判断语句后面留一个空格,右边圆括号后面留一个空格;
  • 每一个 case 应该有 break 语句,除了 default 或者有返回值;
  • 每一个 case 后面留一个空格,判断的常量后面或冒号前面留一个空格;
  • 每一个 case 的代码块前面和后面留一个空行;
  • 在条件判断语句中不应该有赋值语句。

switch ( value ) { 

    case 1 : 

        // ... 
        break ;

    case 2 : 

        // ... 
        break ;

    default : 

        // ... 
        // 不使用 break 

}

6、循环语句

For 循环

  • 要注意 Foreach 和 For In 语句比 For 语句慢得多;
  • for 后面留个空格,左边的括号后留个空格;
  • 赋值部分前面留个空格,后面跟分号和空格;
  • 条件判断部分前面留个空格,后面跟分号和空格;
  • 更新变量部分前面留个空格,后面留个空格,右边圆括号后留个空格。

7、操作符要求

With 操作符

不要使用

等号操作符

使用严格的等号操作符 ===!==

三元操作符

在问号和冒号之间都要留空格

一元操作符

一元操作符要跟着操作数,留个空格,如下所示:

var foo = ! bar;

eval 函数

尽量不使用,解析对象时使用 JSON.parse

undefined 检测

检测 undefined 时,使用严格的等号操作符,如下:

x === undefined;

错误的示范:


// 在现代浏览器中,已经定义了不可变的量 undefined
var undefined; 
x === undefined;

typeof x === 'undefined'

x === void 0

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值