(六)Javascript 规范
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 规范相关推荐
- JavaScript规范和工具 JSlint
规范 Gooogle JavaScript规范: http://google-styleguide.googlecode.com/svn/trunk/javascriptguide.xml JQuer ...
- 前端编码风格规范(3)—— JavaScript 规范
JavaScript 规范 全局命名空间污染与 IIFE 总是将代码包裹成一个 IIFE(Immediately-Invoked Function Expression),用以创建独立隔绝的定义域.这 ...
- 前端JavaScript规范
摘要: JavaScript规范 目录 类型 对象 数组 字符串 函数 属性 变量 条件表达式和等号 块 注释 空白 逗号 分号 类型转换 命名约定 存取器 构造器 事件 模块 jQuery ES5 ...
- amazeui学习笔记二(进阶开发4)--JavaScript规范Rules
amazeui学习笔记二(进阶开发4)--JavaScript规范Rules 一.总结 1.注释规范总原则: As short as possible(如无必要,勿增注释):尽量提高代码本身的清晰性. ...
- JavaScript学习总结(十六)——Javascript闭包(Closure)
闭包(closure)是Javascript语言的一个难点,也是它的特色,很多高级应用都要依靠闭包实现.很早就接触过闭包这个概念了,但是一直糊里糊涂的,没有能够弄明白JavaScript的闭包到底是什 ...
- Google JavaScript规范
一.JavaSrcipt语言规则 1.Variables 变量 所有变量都要使用var来声明.当你没有写 var, 变量就会暴露在全局上下文中, 这样很可能会和现有变量冲突.另外, 如果没有加上, 很 ...
- IT忍者神龟之javascript规范
关于javascript,你必须知道,你不是一个人在战斗! Any violation to this guide is allowed if it enhances readability. 所有的 ...
- 六.javascript对象层次与事件处理
目录 一.对象的引用 二.事件驱动与事件处理 1.事件与处理代码关联 2.调用函数的事件 3.调用代码的事件 4.设置对象事件的方法 5.显式调用事件处理程序 6.事件处理程序的返回值 7.事件与th ...
- JavaScript规范
目录 类型 对象 数组 字符串 函数 属性 变量 条件表达式和等号 块 注释 空白 逗号 分号 类型转换 命名约定 存取器 构造器 事件 模块 jQuery 不使用 类型 原始值: 相当于传值 str ...
最新文章
- 【机器学习】基于粒子群算法的非线性函数寻优
- 神经网络中的注意力机制总结及PyTorch实战
- 设计模式之美:Type Object(类型对象)
- sqlite+php+函数大全,PHP SQLite SQLite 函数_编程学问网
- 时光手帐如何打印 时光手帐打印的方法
- pushlet单播与多播
- C#组件系列——又一款Excel处理神器Spire.XLS,你值得拥有
- note_maven的pom.xml部分配置说明
- wait与notify
- linux系统下 java 环境的安装
- 通过存储过程,插入300万条数据的一点思考?
- APP开发策划方案怎么写?
- Android APK 修改
- 程序员必备的10个B站优质UP主!
- SEO不能不知道的首页关键词策略
- 打开应用商店显示服务器出错了,Win10应用商店提示“我们这边出错了”的三种解决方法...
- 【技术讨论】从弹弹堂说起,如何用2D物理引擎编写一个游戏一2011-11-05 10:36...
- 淘集集怎么就破产了呢?
- 如何在微信公众号文章中怎么添加附件?
- VC++实现获取本地主机网卡信息