Javascript 规范

  • 命名
  • 代码格式
  • 字符串
  • 对象声明
  • 使用 ES6,7
  • 括号
  • undefined 判断
  • 条件判断和循环最多三层
  • this 的转换命名
  • 慎用 console.log
  • 分号
  • 注释

命名

1) 采用小写驼峰命名 lowerCamelCase,代码中的命名均不能以下划线,也不能以下划线或美元符号结束

反例: name / name / name$

2) 方法名、参数名、成员变量、局部变量都统一使用 lowerCamelCase 风格,必须遵从驼峰形式。

正例: localValue / getHttpMessage() / inputUserId

其中 method 方法命名必须是 动词 或者 动词+名词 形式

正例:saveShopCarData /openShopCarInfoDialog

反例:save / open / show / go

特此说明,增删查改,详情统一使用如下 5 个单词,不得使用其他(目的是为了统一各个端)

add / update / delete / detail / get

附: 函数方法常用的动词:

get 获取/set 设置,
add 增加/remove 删除
create 创建/destory 移除
start 启动/stop 停止
open 打开/close 关闭,
read 读取/write 写入
load 载入/save 保存,
create 创建/destroy 销毁
begin 开始/end 结束,
backup 备份/restore 恢复
import 导入/export 导出,
split 分割/merge 合并
inject 注入/extract 提取,
attach 附着/detach 脱离
bind 绑定/separate 分离,
view 查看/browse 浏览
edit 编辑/modify 修改,
select 选取/mark 标记
copy 复制/paste 粘贴,
undo 撤销/redo 重做
insert 插入/delete 移除,
add 加入/append 添加
clean 清理/clear 清除,
index 索引/sort 排序
find 查找/search 搜索,
increase 增加/decrease 减少
play 播放/pause 暂停,
launch 启动/run 运行
compile 编译/execute 执行,
debug 调试/trace 跟踪
observe 观察/listen 监听,
build 构建/publish 发布
input 输入/output 输出,
encode 编码/decode 解码
encrypt 加密/decrypt 解密,
compress 压缩/decompress 解压缩
pack 打包/unpack 解包,
parse 解析/emit 生成
connect 连接/disconnect 断开,
send 发送/receive 接收
download 下载/upload 上传,
refresh 刷新/synchronize 同步
update 更新/revert 复原,
lock 锁定/unlock 解锁
check out 签出/check in 签入,
submit 提交/commit 交付
push 推/pull 拉,
expand 展开/collapse 折叠
begin 起始/end 结束,
start 开始/finish 完成
enter 进入/exit 退出,
abort 放弃/quit 离开
obsolete 废弃/depreciate 废旧,
collect 收集/aggregate 聚集

3) 常量命名全部大写,单词间用下划线隔开,力求语义表达完整清楚,不要嫌名字长。

正例: MAX_STOCK_COUNT

反例: MAX_COUNT

代码格式

1) 使用 2 个空格进行缩进
正例:

if (x < y) {x += 10;
} else {x += 1;
}

2) 不同逻辑、不同语义、不同业务的代码之间插入一个空行分隔开来以提升可读性。

说明:任何情形,没有必要插入多个空行进行隔开。

字符串

统一使用单引号(‘),不使用双引号(“)。这在创建 HTML 字符串非常有好处:

正例:

let str = 'foo';
let testDiv = '<div id="test"></div>';

反例:

let str = 'foo';
let testDiv = "<div id='test'></div>";

对象声明

1)使用字面值创建对象

正例: let user = {};

反例: let user = new Object();

2) 使用字面量来代替对象构造器

正例:

var user = {age: 0,name: 1,city: 3
};

反例:

var user = new Object();
user.age = 0;
user.name = 0;
user.city = 0;

使用 ES6,7

必须优先使用 ES6,7 中新增的语法糖和函数。这将简化你的程序,并让你的代码更加灵活和可复用。

必须强制使用 ES6, ES7 的新语法,比如箭头函数、await/async , 解构, let , for…of 等等

括号

下列关键字后必须有大括号(即使代码块的内容只有一行):if, else, for, while, do, switch, try, catch, finally, with。

正例:

if (condition) {doSomething();
}

反例:

if (condition) doSomething();

undefined 判断

永远不要直接使用 undefined 进行变量判断;使用 typeof 和字符串’undefined’对变量进行判断。

正例:

if (typeof person === 'undefined') {...
}

反例:

if (person === undefined) {...
}

条件判断和循环最多三层

条件判断能使用三目运算符和逻辑运算符解决的,就不要使用条件判断,但是谨记不要写太长的三目运算符。如果超过 3 层请抽成函数,并写清楚注释。

this 的转换命名

对上下文 this 的引用只能使用’self’来命名

慎用 console.log

因 console.log 大量使用会有性能问题,所以在非 webpack 项目中谨慎使用 log 功能

分号

书写过程过,每行代码结束必须有分号;

注释

文件头部注释须标明作者及修改日期。函数注释须标明函数功能,参数及返回值;

(六)Javascript 规范相关推荐

  1. JavaScript规范和工具 JSlint

    规范 Gooogle JavaScript规范: http://google-styleguide.googlecode.com/svn/trunk/javascriptguide.xml JQuer ...

  2. 前端编码风格规范(3)—— JavaScript 规范

    JavaScript 规范 全局命名空间污染与 IIFE 总是将代码包裹成一个 IIFE(Immediately-Invoked Function Expression),用以创建独立隔绝的定义域.这 ...

  3. 前端JavaScript规范

    摘要: JavaScript规范 目录 类型 对象 数组 字符串 函数 属性 变量 条件表达式和等号 块 注释 空白 逗号 分号 类型转换 命名约定 存取器 构造器 事件 模块 jQuery ES5 ...

  4. amazeui学习笔记二(进阶开发4)--JavaScript规范Rules

    amazeui学习笔记二(进阶开发4)--JavaScript规范Rules 一.总结 1.注释规范总原则: As short as possible(如无必要,勿增注释):尽量提高代码本身的清晰性. ...

  5. JavaScript学习总结(十六)——Javascript闭包(Closure)

    闭包(closure)是Javascript语言的一个难点,也是它的特色,很多高级应用都要依靠闭包实现.很早就接触过闭包这个概念了,但是一直糊里糊涂的,没有能够弄明白JavaScript的闭包到底是什 ...

  6. Google JavaScript规范

    一.JavaSrcipt语言规则 1.Variables 变量 所有变量都要使用var来声明.当你没有写 var, 变量就会暴露在全局上下文中, 这样很可能会和现有变量冲突.另外, 如果没有加上, 很 ...

  7. IT忍者神龟之javascript规范

    关于javascript,你必须知道,你不是一个人在战斗! Any violation to this guide is allowed if it enhances readability. 所有的 ...

  8. 六.javascript对象层次与事件处理

    目录 一.对象的引用 二.事件驱动与事件处理 1.事件与处理代码关联 2.调用函数的事件 3.调用代码的事件 4.设置对象事件的方法 5.显式调用事件处理程序 6.事件处理程序的返回值 7.事件与th ...

  9. JavaScript规范

    目录 类型 对象 数组 字符串 函数 属性 变量 条件表达式和等号 块 注释 空白 逗号 分号 类型转换 命名约定 存取器 构造器 事件 模块 jQuery 不使用 类型 原始值: 相当于传值 str ...

最新文章

  1. 【机器学习】基于粒子群算法的非线性函数寻优
  2. 神经网络中的注意力机制总结及PyTorch实战
  3. 设计模式之美:Type Object(类型对象)
  4. sqlite+php+函数大全,PHP SQLite SQLite 函数_编程学问网
  5. 时光手帐如何打印 时光手帐打印的方法
  6. pushlet单播与多播
  7. C#组件系列——又一款Excel处理神器Spire.XLS,你值得拥有
  8. note_maven的pom.xml部分配置说明
  9. wait与notify
  10. linux系统下 java 环境的安装
  11. 通过存储过程,插入300万条数据的一点思考?
  12. APP开发策划方案怎么写?
  13. Android APK 修改
  14. 程序员必备的10个B站优质UP主!
  15. SEO不能不知道的首页关键词策略
  16. 打开应用商店显示服务器出错了,Win10应用商店提示“我们这边出错了”的三种解决方法...
  17. 【技术讨论】从弹弹堂说起,如何用2D物理引擎编写一个游戏一2011-11-05 10:36...
  18. 淘集集怎么就破产了呢?
  19. 如何在微信公众号文章中怎么添加附件?
  20. VC++实现获取本地主机网卡信息

热门文章

  1. apche commons项目简介
  2. 段的创建表user_segments
  3. node-red教程2 第一条数据流
  4. Kerberos认证代码分析Can't get Kerberos realm
  5. 优化Linux下的内核TCP参数来提高服务器负载能力
  6. python 操作数据库的常用SQL命令
  7. redhat7.0配置网卡
  8. ECharts - 饼状图隐藏标示线和标示文字
  9. PHP面试常考内容之面向对象(3)
  10. 高级软件工程第七次作业:东理三剑客团队作业-随笔5