web项目开发 之 前端规范 --- JavaScript编码规范

               

JavaScript编码规范

1 前言

2 代码风格

  2.1 文件

  2.2 结构

    2.2.1 缩进

    2.2.2 空格

    2.2.3 换行

    2.2.4 语句

  2.3 命名

  2.4 注释

    2.4.1 单行注释

    2.4.2 多行注释

    2.4.3 文档化注释

    2.4.4 类型定义

    2.4.5 文件注释

    2.4.6 命名空间注释

    2.4.7 类注释

    2.4.8 函数/方法注释

    2.4.9 事件注释

    2.4.10 常量注释

    2.4.11 复杂类型注释

    2.4.12 AMD 模块注释

    2.4.13 细节注释

3 语言特性

  3.1 变量

  3.2 条件

  3.3 循环

  3.4 类型

    3.4.1 类型检测

    3.4.2 类型转换

  3.5 字符串

  3.6 对象

  3.7 数组

  3.8 函数

    3.8.1 函数长度

    3.8.2 参数设计

    3.8.3 闭包

    3.8.4 空函数

  3.9 面向对象

  3.10 动态特性

    3.10.1 eval

    3.10.2 动态执行代码

    3.10.3 with

    3.10.4 delete

    3.10.5 对象属性

4 浏览器环境

  4.1 模块化

    4.1.1 AMD

    4.1.2 define

    4.1.3 require

  4.2 DOM

    4.2.1 元素获取

    4.2.2 样式获取

    4.2.3 样式设置

    4.2.4 DOM 操作

    4.2.5 DOM 事件

1 前言

JavaScript 在百度一直有着广泛的应用,特别是在浏览器端的行为管理。本文档的目标是使 JavaScript 代码风格保持一致,容易被理解和被维护。

虽然本文档是针对 JavaScript 设计的,但是在使用各种 JavaScript 的预编译语言时(如 TypeScript 等)时,适用的部分也应尽量遵循本文档的约定。

2 代码风格

2.1 文件

[建议] JavaScript 文件使用无 BOM 的 UTF-8 编码。

解释:

UTF-8 编码具有更广泛的适应性。BOM 在使用程序或工具处理文件时可能造成不必要的干扰。

[建议] 在文件结尾处,保留一个空行。

2.2 结构

2.2.1 缩进

[强制] 使用 4 个空格做为一个缩进层级,不允许使用 2 个空格 或 tab 字符。
[强制] switch 下的 case 和 default 必须增加一个缩进层级。

示例:

// goodswitch (variable) {    case '1':        // do...        break;    case '2':        // do...        break;    default:        // do...}// badswitch (variable) {case '1':    // do...    break;case '2':    // do...    break;default:    // do...}

2.2.2 空格

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

示例:

var a = !arr.length;a++;a = b + c;
[强制] 用作代码块起始的左花括号 { 前必须有一个空格。

示例:

// goodif (condition) {}while (condition) {}function funcName() {}// badif (condition){}while (condition){}function funcName(){}
[强制] if / else / for / while / function / switch / do / try / catch / finally 关键字后,必须有一个空格。

示例:

// goodif (condition) {}while (condition) {}(function () {})();// badif(condition) {}while(condition) {}(function() {})();
[强制] 在对象创建时,属性中的 : 之后必须有空格,: 之前不允许有空格。

示例:

// goodvar obj = {    a: 1,    b: 2,    c: 3};// badvar obj = {    a : 1,    b:2,    c :3};
[强制] 函数声明、具名函数表达式、函数调用中,函数名和 ( 之间不允许有空格。

示例:

// goodfunction funcName() {}var funcName = function funcName() {};funcName();// badfunction funcName () {}var funcName = function funcName () {};funcName ();
[强制] , 和 ; 前不允许有空格。如果不位于行尾,, 和 ; 后必须跟一个空格。

示例:

// goodcallFunc(a, b);// badcallFunc(a , b) ;
[强制] 在函数调用、函数声明、括号表达式、属性访问、if / for / while / switch / catch 等语句中,() 和 [] 内紧贴括号部分不允许有空格。

示例:

// goodcallFunc(param1, param2, param3);save(this.list[this.indexes[i]]);needIncream && (variable += increament);if (num > list.length) {}while (len--) {}// badcallFunc( param1, param2, param3 );save( this.list[ this.indexes[ i ] ] );needIncreament && ( variable += increament );if ( num > list.length ) {}while ( len-- ) {}
[强制] 单行声明的数组与对象,如果包含元素,{} 和 [] 内紧贴括号部分不允许包含空格。

解释:

声明包含元素的数组与对象,只有当内部元素的形式较为简单时,才允许写在一行。元素复杂的情况,还是应该换行书写。

示例:

// goodvar arr1 = [];var arr2 = [1, 2, 3];var obj1 = {};var obj2 = {name: 'obj'};var obj3 = {    name: 'obj',    age: 20,    sex: 1};// badvar arr1 = [ ];var arr2 = [ 1, 2, 3 ];var obj1 = { };var obj2 = { name: 'obj' };var obj3 = {name: 'obj', age: 20, sex: 1};
[强制] 行尾不得有多余的空格。

2.2.3 换行

[强制] 每个独立语句结束后必须换行。
[强制] 每行不得超过 120 个字符。

解释:

超长的不可分割的代码允许例外,比如复杂的正则表达式。长字符串不在例外之列。

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

示例:

// goodif (user.isAuthenticated()    && user.isInRole('admin')    && user.hasAuthority('add-admin')    || user.hasAuthority('delete-admin')) {    // Code}var result = number1 + number2 + number3    + number4 + number5;// badif (user.isAuthenticated() &&    user.isInRole('admin') &&    user.hasAuthority('add-admin') ||    user.hasAuthority('delete-admin')) {    // Code}var result = number1 + number2 + number3 +    number4 + number5;
[强制] 在函数声明、函数表达式、函数调用、对象创建、数组创建、for 语句等场景中,不允许在 , 或 ; 前换行。

示例:

猜你喜欢

转载自blog.csdn.net/qq_43682537/article/details/86555365