美文网首页
JavaScript编码规范

JavaScript编码规范

作者: 吃不胖的茶叶蛋 | 来源:发表于2018-07-06 10:38 被阅读5次

1 结构

1.1 缩进

[强制]使用4个空格作为一个缩进层级

[强制] switch 下的 case 和 default 必须增加一个缩进层级。
示例:

// good
switch (variable) {

    case '1':
        // do...
        break;

    case '2':
        // do...
        break;

    default:
        // do...

}

// bad
switch (variable) {

case '1':
    // do...
    break;

case '2':
    // do...
    break;

default:
    // do...

}

1.2 空格

[强制] 二元运算符两侧必须有一个空格,一元运算符与操作对象之间不允许有空格

var a = !arr.length;
a++;
a = b + c;

[强制] 用作代码块起始的左花括号 { 前必须有一个空格。

// good
if (condition) {
}

while (condition) {
}

function funcName() {
}

// bad
if (condition){
}

while (condition){
}

[强制] if / else / for / while / function / switch / do / try / catch / finally 关键字后,必须有一个空格。

// good
if (condition) {
}

while (condition) {
}

(function () {
})();

[强制] 在对象创建时,属性中的 : 之后必须有空格,: 之前不允许有空格。

// good
var obj = {
    a: 1,
    b: 2,
    c: 3
};

// bad
var obj = {
    a : 1,
    b:2,
    c :3
};

[强制] 函数声明、具名函数表达式、函数调用中,函数名和 ( 之间不允许有空格。

// good
function funcName() {
}

var funcName = function funcName() {
};

funcName();

// bad
function funcName () {
}

var funcName = function funcName () {
};

[强制] , 和 ; 前不允许有空格。

// good
callFunc(a, b);

// bad
callFunc(a , b) ;

[强制] 单行声明的数组与对象,如果包含元素,{} 和 [] 内紧贴括号部分不允许包含空格。

// good
var arr1 = [];
var arr2 = [1, 2, 3];
var obj1 = {};
var obj2 = {name: 'obj'};
var obj3 = {
    name: 'obj',
    age: 20,
    sex: 1
};

// bad
var arr1 = [ ];
var arr2 = [ 1, 2, 3 ];
var obj1 = { };
var obj2 = { name: 'obj' };
var obj3 = {name: 'obj', age: 20, sex: 1};

1.3 换行

[强制] 每行不得超过 120 个字符。

[强制] 运算符处换行时,运算符必须在新行的行首。

// good
if (user.isAuthenticated()
    && user.isInRole('admin')
    && user.hasAuthority('add-admin')
    || user.hasAuthority('delete-admin')
) {
    // Code
}

var result = number1 + number2 + number3
    + number4 + number5;


// bad
if (user.isAuthenticated() &&
    user.isInRole('admin') &&
    user.hasAuthority('add-admin') ||
    user.hasAuthority('delete-admin')) {
    // Code
}

var result = number1 + number2 + number3 +
    number4 + number5;

[建议] 对于 if...else...、try...catch...finally 等语句,推荐使用在 } 号后添加一个换行 的风格,使代码层次结构更清晰,阅读性更好。

if (condition) {
    // some statements;
}
else {
    // some statements;
}

try {
    // some statements;
}
catch (ex) {
    // some statements;
}

1.4 语句

[强制] 不得省略语句结束的分号。

[强制] 在 if / else / for / do / while 语句中,即使只有一行,也不得省略块 {...}。

// good
if (condition) {
    callFunc();
}

// bad
if (condition) callFunc();
if (condition)
    callFunc();

2 命名

[强制] 变量 使用 Camel命名法。

var loadingModules = {};

[强制] 常量 使用 全部字母大写,单词间下划线分隔 的命名方式。

var HTML_ENTITY = {};

[强制] 函数以及函数的参数 使用 Camel命名法。

function stringFormat(theBells) {
}

[强制] 类 使用 Pascal命名法。

function TextNode(options) {
}

[强制] 由多个单词组成的缩写词,在命名中,根据当前命名法和出现的位置,所有字母的大小写与首字母的大小写保持一致。

function XMLParser() {
}

function insertHTML(element, html) {
}

var httpRequest = new HTTPRequest();

[强制] 类名 使用 名词。

function Engine(options) {
}

[建议] 函数名 使用 动宾短语。

function getStyle(element) {
}

3 注释

3.1 单行注释:

[强制] 必须独占一行。// 后跟一个空格,缩进与下一行被注释说明的代码一致。

3.2 多行注释:

[建议] 避免使用 /.../ 这样的多行注释。有多行注释内容时,使用多个单行注释。**

3.3 函数/方法注释

[强制] 函数/方法注释必须包含函数说明,有参数和返回值时必须使用注释标识。

[强制] 参数和返回值注释必须包含类型信息和说明。

/**
 * 函数描述
 *
 * @param {string} p1 参数1的说明
 * @param {string} p2 参数2的说明,比较长
 *     那就换行了.
 * @param {number=} p3 参数3的说明(可选)
 * @return {Object} 返回值描述
 */
function foo(p1, p2, p3) {
    var p3 = p3 || 10;
    return {
        p1: p1,
        p2: p2,
        p3: p3
    };
}gg

4 语言特性

4.1 条件

[强制] 在 Equality Expression 中使用类型严格的 ===。仅当判断 null 或 undefined 时,允许使用 == null。

解释:

使用 === 可以避免等于判断中隐式的类型转换。

示例:

// good
if (age === 30) {
    // ......
}

// bad
if (age == 30) {
    // ......
}

4.2 类型抓换

[建议] 转换成 string 时,使用 + ''。

// good
num + '';

// bad
new String(num);
num.toString();
String(num);

[建议] 转换成 number 时,通常使用 +。

// good
+str;

// bad
Number(str);

[强制] 使用 parseInt 时,必须指定进制。

// good
parseInt(str, 10);

// bad
parseInt(str);

[建议] 转换成 boolean 时,使用 !!。

var num = 3.14;
!!num;

4.3 字符串

[强制] 字符串开头和结束使用单引号 '。

4.4 数组

[强制] 使用数组字面量 [] 创建新数组,除非想要创建的是指定长度的数组。

// good
var arr = [];

// bad
var arr = new Array();

相关文章

  • 前端开发文档规范

    HTML 编码规范 请查看HTML编码规范 CSS 编码规范 请查看CSS编码规范 JavaScript 编码规范...

  • 前端开发规范(实验室版)

    前端编码规范—— HTML 篇 前端编码规范—— CSS 篇 前端编码规范—— JavaScript 篇 这几天和...

  • 代码规范

    JavaScript 编码规范(草案) 该规范改编自 Airbnb JavaScript Style Guide[...

  • React最佳实践

    tags:开发随笔 代码风格 用ES6,遵循Airbnb的React编码规范和javascript 编码规范。两个...

  • JavaScript编码规范

    JavaScript编码规范 1 前言 2 代码风格 2.1 文件 2.2 结构 2.2.1 缩进 2.2.2 空...

  • JavaScript 编码规范

    1 前言 JavaScript在百度一直有着广泛的应用,特别是在浏览器端的行为管理。本文档的目标是使JavaScr...

  • JavaScript编码规范

    1 结构 1.1 缩进 [强制]使用4个空格作为一个缩进层级 [强制] switch 下的 case 和 defa...

  • JavaScript编码规范

    JavaScript编码规范 1 前言 2 代码风格 2.1 文件 2.2 结构 2.2.1 缩进 2.2.2 空...

  • Javascript编码规范

    1. 缩进 永远不要混用空格和Tab。 为了可读性,部门统一建议使用2个空格宽度的缩进。 2. 语法 A. 变量命...

  • JavaScript编码规范

    JavaScript编码规范 1 前言 JavaScript 在百度一直有着广泛的应用,特别是在浏览器端的行为管理...

网友评论

      本文标题:JavaScript编码规范

      本文链接:https://www.haomeiwen.com/subject/yhsvuftx.html