#######################

1.缩进

[强制] 使用 4 个空格做为一个缩进层级,不允许使用 2 个空格 或 tab 字符。

[强制] switch中缩进2个空格

[强制] 要求分号前面不可以有空格,后面可以有空格

[强制] 要求语句块之前保留一个空格

[强制] 关键字和类似关键字前后保留一个空格

[强制] 要求运算符前后保留一个空格

[强制] 要求在一元操作符前后存在空格

[强制] 要求在注释前有一个空格

[强制] 要求逗号后面有一个空格,前面不允许有空格

[强制] 要求generator函数*前面空一格,后面不空格

[禁止] 不必要的空白

[禁止] 使用 空格 和 tab 混合缩进

[禁止] 出现多个空格

[禁止] 在对象字面量、解构赋值 和 import/export 说明符的花括号中使用空格

[禁止] 函数圆括号之前有一个空格

[禁止] 圆括号内的空格

2.换行

[强制] 要求文件末尾空一行

[强制] 要求声明变量后要空一行

[强制] 要求块内开头末尾空一行

[禁止] 出现多个空行

3.语句

[强制] 要求逗号在行尾出现

[强制] 要求if else while for do后面的代码块用{ }包围

[强制] 要求在每个语句的末尾有分号

[禁止] 空块语句

[禁止] 使用标签语句

[禁止] 在嵌套的语句块中出现function 声明

[禁止] 在运算关系的左侧使用布尔值,例如:if( !key in obj)

[禁止] 在返回语句中赋值

4.命名

[强制] 驼峰命名格式

[强制] 所有的常量都使用大写

[建议] boolean 类型的变量使用 is 或 has 开头。

5.注释

[强制] 文件:创建新的文件时,页头注释完整;包含

/*

* url: 页面路由

* author:开发人

* date:开发时间

* description:页面描述

*/

[强制] 注释与上一行之间必须空一行

[强制] 要求在注释前有一个空格

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

[强制] 对 Object 中各项的描述, 必须使用 @param 标识。

[强制] 类的属性或方法等成员信息使用 @public / @protected / @private 中的任意一个,指明可访问性。

[禁止] 注释和代码出现在同一行

[建议] 文件注释中可以用 @author 标识开发者信息。

[建议] 命名空间使用 @namespace 标识。

[建议] 使用 @class 标记类或构造函数。

[建议] 使用 @extends 标记类的继承信息。

6.变量

[强制] 函数中的变量在一起声明

[禁止]  会根据不同环境等情况,动态变化的值,禁止写死

[禁止] 重新声明原生对象

[禁止] 重新声明变量

[禁止] 重新定义关键字

[禁止] 初始化变量为undefined

7.条件判断

[强制] 判断条件最多有九次

[禁止] 自身比较

[禁止] 在条件语句中出现赋值操作符,例如if(a = b)

[禁止] 在条件中使用常量表达式,例如:if(1)

[禁止] 在 else 前有 return,如果 if 块中包含了一个 return 语句,else 块就成了多余的了。可以将其内容移至块外。

[禁止] if 语句作为唯一语句出现在 else 语句块中

[建议] 对于相同变量或表达式的多值条件,用 switch 代替 if

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

8.循环

[禁止] 循环中存在函数

[建议] 对循环内多次使用的不变值,在循环外用变量缓存。

9.类型

[强制] 要求调用 isNaN()检查 NaN

[强制] typeof 表达式与有效的字符串进行比较

[建议] 类型检测优先使用 typeof。对象类型检测使用 instanceof。null 或 undefined 的检测使用 == null。

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

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

[建议] string 转换成 number,要转换的字符串结尾包含非数字并期望忽略时,使用 parseInt。

10.字符串

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

[强制] 当使用 _dirname 和 _filename 时不允许字符串拼接,windows和unix路径分隔符不同,为了避免混淆并且创建正确的路径

[建议] 复杂的数据到视图字符串的转换过程,选用一种模板引擎

[建议] 使用``进行字符串拼接,尽量使用es6中的模板字符串对字符串进行拼接,避免使用加号+和join方法

11.对象

[强制] 定义getter,如果对象的setter存取器存在

[强制] 对象键值末尾不能带逗号

[强制] 以方括号取对象属性时,[之后和]之前不能带空格

[强制] object.key中'.'号应与属性在同一行

[强制] 对象字面量的key和冒号之间不允许有空格,冒号和value之间必须有空格

[强制] 使用对象字面量 {} 创建新 Object

[禁止] 对象字面量中出现重复的 key

[禁止] 扩展原生对象

[建议] 属性访问时,尽量使用

12.数组

[强制] '['之后和']'之前不能带空格

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

[禁止] 稀疏数组,例如: arr = [1, 2, ,, 4]

13.函数

[强制] 如果函数包含err或者error作为参数,但是在函数内没有做错误的处理则会报错

[强制] 调用函数时括号前面不能有空格,也不能换行,只能 fun()

[禁止] 使用 arguments.caller 和 arguments.callee,因为他们已经在es5中被弃用

[禁止] 在 function 定义中出现重复的参数

[禁止] 使用未声明的变量

[禁止] 存在未使用过的变量

[禁止] 存在未使用过的表达式

[禁止] 在return、throw、continue 和 break 语句之后出现不可达代码

[禁止] 使用Function构造函数,例如: var person = new function () {}

[禁止] 对函数参数再赋值

[建议] 一个函数的长度控制在 50 行以内

[建议] 一个函数的参数控制在 6 个以内

[建议] 通过 options 参数传递非数据输入型参数

14.其它最佳实践

[强制] 实例化构造函数时首字母必须大写

[强制] 要求调用首字母大写的函数时有 new 操作符

[强制] 实例化时必须要带括号

[强制] 操作符使用一致的换行符风格,例如:foo = 1
                                                                              + 2

[强制] 限制可以被抛出的异常

[禁止] 在块级作用域外访问块内定义的变量

[禁止] 存在alert、console、debugger

[禁止] 在正则表达式中使用控制字符

[禁止] 删除变量,例如 delete x

[禁止] 使用eval()

[禁止] 冗余的括号

[禁止] 不必要的分号

[禁止] case 语句落空

[禁止] 隐式的eval()

[禁止] 不规则的空白

[禁止] 出现多个空格

[禁止] 使用new产生副作用,例如:只new Person()但却不使用

[禁止] 对 String,Number 和 Boolean 使用 new 操作符

[禁止] 将全局对象当作函数进行调用,例如:var math = Math()

[禁止] 正则表达式字面量中出现多个空格

[禁止] 可以在有更简单的可替代的表达式时使用三元操作符

###############################

js开发规范的更多相关文章

  1. js开发规范,在php上也适用

    本篇主要介绍JS的命名规范.注释规范以及框架开发的一些问题. 目录 1. 命名规范:介绍变量.函数.常量.构造函数.类的成员等等的命名规范 2. 注释规范:介绍单行注释.多行注释以及函数注释 3. 框 ...

  2. 用Vue.js开发微信小程序:开源框架mpvue解析

    前言 mpvue 是一款使用 Vue.js 开发微信小程序的前端框架.使用此框架,开发者将得到完整的 Vue.js 开发体验,同时为 H5 和小程序提供了代码复用的能力.如果想将 H5 项目改造为小程 ...

  3. Web前端开发规范文档你需要知道的事--HTML、css、js、文档等需要规范内容

          规范目的 为提高团队协作效率,便于后台人员添加功能及前端后期优化维护,输出高质量的文档,特制订此文档.本规范文档一经确认,前端开发人员必须按本文档规范进行前台页面开发.本文档如有不对或者不 ...

  4. 前端开发规范:命名规范、html 规范、css 规范、js 规范

    上周小组的培训内容是代码可读性艺术,主要分享如何命名.如何优化代码排版,如何写好的注释.我们都知道写出优雅的代码是成为大牛的必经之路. 下面感谢一位前端开发小伙伴总结的前端开发规范,通过学习相关开发规 ...

  5. 前端开发规范之命名规范、html规范、css规范、js规范

    在学习编程的时候,每次看到那些整齐规范的代码,心里顿时对这个程序员表示点点好感,有时,比如看到自己和朋友写的代码时,那阅读起来就是苦不堪言,所以,一些基本的开发规范是必须的,是为了自己方便阅读代码,也 ...

  6. 转载:移动web开发规范

    本文来源:http://blog.csdn.net/joueu/article/details/44329825 以下是规范建议,均是日常在开发当中的的一些经验,仅供参考. 移动web开发规范 一.头 ...

  7. heX——基于 HTML5 和 Node.JS 开发桌面应用

    heX 是网易有道团队的一个开源项目,允许你采用前端技术(HTML,CSS,JavaScript)开发桌面应用软件的跨平台解决方案.heX 是你开发桌面应用的一种新的选择,意在解决传统桌面应用开发中繁 ...

  8. Web前端开发规范文档(google规范)

    (Xee:其实没什么规范约束,但是养成一种好习惯,何乐而不为?) 区分大小写 xhtml  区分大小写,xhtml要求 标签名 属性名 值都要小写,并且要有双引号和 标签闭合. css 元素名称以及i ...

  9. WEB前端开发规范

    WEB前端开发规范 规范目的 为提高团队协作效率, 便于后台人员添加功能及前端后期优化维护, 输出高质量的文档, 特制订此文档.本文档如有不对或者不合适的地方请及时提出, 经讨论决定后方可更改. 基本 ...

  10. thinkphp开发规范

    1.编写目的     为了更好的提高技术部的工作效率,保证开发的有效性和合理性,并可最大程度的提高程序代码的可读性和可重复利用性,指定此规范.开发团队根据自己的实际情况,可以对本规范进行补充或裁减. ...

随机推荐

  1. 二,使用axios

    1,下载https://unpkg.com/axios@1.3.2/dist/axios.min.js保存在js目录下,命名为axios.js 2,http.js let baseUrl = &quo ...

  2. Filbeat采集nginx-ingress日志

    一.创建configmap配置文件 注:filebeat6以上版本需要将prospectors改为inputs,paths下指定的nginx-ingress日志路径匹配模式以及hosts指定的kafk ...

  3. ps2022(Photoshop 2022)Mac/win最新图像处理中文版

    Adobe Photoshop 2022 Mac/win是数字图像处理和编辑的行业标准,提供了全面的专业修饰工具包,并具有旨在激发灵感的强大编辑功能.Photoshop 带有大量图像处理工具,旨在帮助 ...

  4. mysql表操作2

    表介绍: 表就相当于文件,表中的一条记录就相当于文件的一行内容,不同的是,表中的一条记录有对应的标题,称为表的字段 创建表: #语法: create table 表名( 字段名1 类型[(宽度) 约束 ...

  5. 转载一个很强大的GIT存储库学习链接

    https://learngitbranching.js.org/?locale=zh_CN 可以按照步骤一步步学习相关的知识点

  6. PyQt5 & PySide2信号与槽机制1

    pyside2&pyqt5的信号与槽机制 1.信号与槽的两种写法 第一种情况: from PySide2 import QtWidgets, QtCore import sys if __na ...

  7. tensorflow的断点续训

    tensorflow的断点续训 2019-09-07 顾名思义,断点续训的意思是因为某些原因模型还没有训练完成就被中断,下一次训练可以在上一次训练的基础上继续训练而不用从头开始:这种方式对于你那些训练 ...

  8. SAP B1 增加或删除单据,或者是新增修改BOM清单,报错‘出现内部错误时’,一般是控制过程 SBO_SP_TransactionNotification 里面的代码有问题,执行不下去了,因此一行行检查SQL代码,一般就能发现错误所在。

    SAP B1 增加或删除单据,或者是新增修改BOM清单,报错'出现内部错误时',一般是控制过程 SBO_SP_TransactionNotification 里面的代码有问题,执行不下去了,因此一行行 ...

  9. Django数据迁移介绍

    1.简介 迁移是 Django 将你对模型的修改(例如增加一个字段,删除一个模型)应用至数据库表结构对方式 2.基本命令 python manage.py migrate---负责应用和撤销迁移 py ...

  10. 事与愿违( backfire effect ) 的故事

    例如:我作为一个需求者,我想要买世界上最便宜的苹果手机,但是当我进入市场去寻找世界上最便宜苹果手机的时候,这一行为本身就使得苹果手机的价格上升. 作为供应者,我本来要去卖最贵的房子,但是当我作为开发商 ...