首页 > 其他分享 >js开发规范

js开发规范

时间:2023-04-17 15:02:03浏览次数:44  
标签:语句 建议 禁止 规范 js 空格 开发 使用 强制

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

 

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,空格,开发,使用,强制
From: https://blog.51cto.com/u_13912516/6195201

相关文章

  • 【vue3-element-admin】Husky + Lint-staged + Commitlint + Commitizen + cz-git 配
    前言本文介绍vue3-element-admin如何通过Husky+Lint-staged+Commitlint+Commitizen+cz-git来配置Git提交代码规范。核心内容是配置Husky的pre-commit和commit-msg两个钩子:pre-commit:Husky+Lint-staged整合实现Git提交前代码规范检测/格式化(前提......
  • 使用 snmp4j 开发 SnmpTrap V3 版本服务端
    SnmpTrap snmp,是简单网络协议,snmpTrap是硬件设备遇到异常时主动推送给服务端的消息安装好snmptrap依赖后,执行snmptrap-h,查看帮助可以看到有3个版本,1、2c和3其中1和2c使用的团体名,而3版本添加了新的认证机制常规参数-r重试次数和-t超时时间指令格式常用第二......
  • 业务扩展:图灵机器人调用(API)接口模式的开发流程及其注意事项
    业务场景:在网站添加一个可以回答用户问题的对话机器人;解决方案:使用三方图灵机器人(turing)进行语料库控制,数据统计,问题反馈等;操作流程:1、申请图灵开发者账号权限,官网网站:http://www.tuling123.com/2、购买相应套餐获取机器人功能,完成认证之后可获得免费版,未完成认证则需要完成套......
  • 布隆过滤器:后端开发者必学的知识点!
    摘要:对于后端程序员来讲,学习和理解布隆过滤器有很大的必要性。来吧,我们一起品味布隆过滤器的设计之美。本文分享自华为云社区《品味布隆过滤器的设计之美》,作者:勇哥java实战分享。布隆过滤器是一个精巧而且经典的数据结构。你可能没想到:RocketMQ、Hbase、Cassandra、LevelD......
  • 工具开发-idea
    1、正则语法工具支持python\java\php\js等语言的正则,可以设计正则规则,观察对样本文本的处理结果,以及对批量样本的处理结果支持各语言的正则语法使用提示,以及对正则规则的功能进行中文阐述支持常用功能的正则收集,比如请求报文解析、url解析、手机号判断、邮箱判断、ip判断等等2......
  • 【js】时间戳转时间 1680338700 =》2023-04-01 16:45:00
    1transformTimestamp(timestamp){2letdate=newDate(parseInt(timestamp)*1000)3letYear=date.getFullYear()4letMoth=(date.getMonth()+1<10?'0'+(date.getMonth()+1):date.getMonth()+1)5letDay=(date.getDat......
  • Java开发笔记13(树的结构修改记录)
    1.Controller:/***区域树生成*/@GetMapping("/list")privateResultregionTree(){Stationstation=getStation(getUser());StringstationCode=station.getStationTelecode();List<NewTreeVo>tree=stationInfRelaService.regionTree(stat......
  • [全程建模]关于建模技术中界面层开发设计的问题
    是的,我曾经说过这个问题。这也是目前全程建模或者说是我认为的建模技术目前最大的两个弱点之一。jsp几乎没有自动生成的方法,否则,你设计的工作量会远远大于实际编码的工作量,所以,我建议b/s开发中界面部分通过界面设计引入,然后,手写完成。目前比较好的做jsp开......
  • 盘点国内前端npm CDN替代方案,基本上可以替代unpkg、jsdelivr
    收集一波常见的加速NPM包的CDN,发现有些还是挺好用的,用来做博客或者网站加载NPM使用还是可以的。经典老牌的CDN加速unpkg.comcdn.jsdelivr.netfastly.jsdelivr.net使用方法:直接进官网,搜NPM包名使用。缺点:有时候不是很稳定,而且国内有些地方没法访问,jsdelivr曾经被用来结合......
  • python+playwright 学习-52 iframe 定位与操作元素,监听事件,执行JS脚本总结
    前言本篇全面总结关于iframe的定位,iframe上元素的操作(输入框,点击等),iframe上的事件监听与iframe上执行JS脚本的总结。iframe对象的定位定位iframe对象,总的来说有四种方法page.frame_locator(selector)通过page对象直接定位iframe对象,传selector选择器参数page.loca......