Skip to content

JavaScript

语法特性

  • 优先使用 TypeScript 编写代码
  • 优先使用最新的 ECMAScript 语法和特性

名称

  • 使用有意义的英文单词
  • 尽量避免使用数字、空格、连字符(如 -_)、缩写、无法阅读和识别的组合(如 danJia)、非英文字符(如 🎶价格)等
  • 变量和字段名称使用 ‘camelCase’ 方式命名
  • 模块和类名称使用 ‘CamelCase’ 方式命名

注释

  • 使用 JSDocTSDoc 语法编写注释内容
  • 编写尽量详细的注释

空格、换行、缩进和标点符号

  • 每行的首尾均不能是空格(以空格缩进的行首除外)
  • 关键词、运算符与变量、常量和字面量之间保留一个空格
  • 数组和对象
    • 尽量将数组和对象拆分为多行书写
    • 每行一个成员或属性,以 , 结尾,并根据层级向内缩进对应的数量
    • 每个 [{ 与之前的内容保持在同一行,在其后换行
    • 每个 ]} 在其前换行,并于之后的内容保持在同一行
  • 函数
    • 声明时,function funcName() {} 函数名称与 () 之间没有空格
    • 匿名函数不论是否有参数,都需要保留 ()
    • 函数参数较多时,可以分为多行编写
  • 三目运算符使用换行和缩进区分两个分支
  • 连续调用和有多个判断条件时,可以使用缩进区分不同的操作对象和数据比较

变量、常量和作用域

  • 始终使用 let 声明变量,避免使用任何 var
  • 始终在声明变量时指定初始值
  • 仅能将变量赋值为同一类型的数据
  • 始终使用 const 声明常量
  • 每条语句仅能声明一个变量或常量
  • 仅在需要的作用域中声明和使用变量和常量
  • 尽量避免设置和使用全局变量或常量
  • 始终在作用域的顶部完成变量和常量的声明和初始化
  • 禁止在同一作用域内重复声明同名的变量或常量

数据计算和类型比较

  • 仅能计算和比较相同类型的数据
  • 多个数据的运算可以使用括号明确优先级
  • 禁止使用 == 比较数据是否相等
  • 比较语句应当是幂等的,禁止任何有副作用的操作

模块

  • 始终选择 ESM 方案
  • 优先导出和使用默认模块

错误处理

  • 始终编写错误处理逻辑
  • 对错误可以选择忽略、重试、备用方案,或者打印日志、提交给统计接口
  • 无法处理的错误可以继续抛出,交给其他相关逻辑处理

格式检查与格式化

  • 应当使用 ESLint 进行代码格式检查
  • 选择合适且完善的 ESLint 规则
  • 尽量避免大规模的自动格式化