## 前言
在js的代码开发中,我简单的总结出了以下规则,后面会陆续补充并且对规范进行分类。
1. js代码建议保存到后缀名.js的文件中
2. js代码不建议放在html中,原因有:不能被缓存,会增大网页文件的大小,可维护性不高,会影响页面的加载。另外脚本的lang(已弃用)以及type(默认是text/javascript)属性都可以省略。
3. 缩进,建议使用空格,因为各个环境对tab的解释不通,而空格可以在压缩文件中统一被压缩掉。
4. 每行控制在80个字符以内,如果超过请折行。
5. 注释 :
注释可以增加代码的可维护性,尤其在项目交接的时候。
写好注释有利于团队的集成开发。
在更新功能以及模块时通过注释进行补充说明。
写有意义的注释,关键位置的说明。
6. 变量声明:
在所有的变量使用前进行声明;
多个变量同时命名时,可以简化用,分割同时命名;
变量命名,jq的变量以$开头,比如常用的$this,私有变量以_开始;
变量没有块的概念;
注意全局变量与布局变量,避免使用全局变量,同时避免局部变量覆盖全局变量。
在函数体内,注意函数变量的说明,函数内使用到的变量要在函数头部进行尽量统一声明,尤其很多入参或者出参的时候。
7. 函数声明:
所有的函数应该在使用前被声明;
函数声明格式,函数名与左括号无间隔,右括号与方法体大括号有空格,大括号结束符与方法声明行头部对齐。(快捷键crtl+shift+f)
特别的,如果是匿名函数,应该在方法类型与小括号之间加空格。
8. 命名 :
变量名由26个大小写引文字母以及下划线组成,避免使用中文,不要再变量名中使用斜杠或者美元符号,不要把下划线用作变量的第一个字符,它有时会用作对象的私有变量,大多数的变量或者方法名应该以小写字母开头。
全局变量应该全部大写字母。
9. 语句 :
9.1 简单语句
每一行语句最多只包含一条语句,吧分号放在每个简单语句的结尾。注意每个变量或者对象的赋值语句也是简单语句,应该以分号结尾。
js吧任何表达式都当一条简单语句,会导致一些隐性的错误。如果自己没加分号,那么js解释器会自动添加分号,按照自己能读懂的断句。
9.2 复合语句
也称为语句块,被包在大括号内部。
内部的语句块需要缩进四个空格,左大括号在起始行的结尾处,右大括号与左大括号所在行的开头对齐。
大括号要在使用语句块的时候使用,哪怕只有一句,这样可以避免以后再添加语句的时候造成逻辑错误,比如if else 这样的语句中,默认只对单行代码有效 。
10. 标识 :
标识是可选的,只有在do,while,for,switch中使用。
11. return 语句
当返回语句只有一条返回值的时候,不用加小括号;
当返回语句多个值的时候,小括号。
当返回表达式的时候,应该控制在同一行,分号结尾。
12. 基本语句的格式,按照正确的句法,比如if,else,for,switch 等
13. 空白 :
相关程序之间添加空白行增强程序的可读性。
每个控制结构,比如for循环的三个分支之间。
变量声明时每个逗号之间。
14. 变量作用域
js没有有块级作用域,只有函数作用域。
15.
[] {} 的用法
使用直接量发来声明对象和数组。
比如对象 var obj={} ;var arr=[]
16. eval
eval是最容易混乱使用的js函数,他可以执行内部入参的js函数或者表达式,可以直接解析变量。不建议使用 。
17. 不建议修改内建对象的原型链
内建对象的原型链 是比较好的标准 自己不要修改内建对象的相关方法 在内建对象的es5 es6 语法中有哪些
18. this关键字的使用场景 :
全局变量 ,触发元素,构造器本身,定义域
19. 明确真值表
明智的使用真假判断 (a==true)(a)
``` javascript
- logTruthyFalsy(true); // truthy
- logTruthyFalsy(1); // truthy
- logTruthyFalsy({}); // truthy
- logTruthyFalsy([]); // truthy
- logTruthyFalsy('0'); // truthy
- logTruthyFalsy(false); // falsy
- logTruthyFalsy(0); // falsy
- logTruthyFalsy(undefined); // falsy
- logTruthyFalsy(null); // falsy
- logTruthyFalsy(NaN); // falsy
- logTruthyFalsy(''); // falsy
```
20\. 判断是否相等时候 采用=== 判断包括类型的相等
21\. 尽量使用语法严格模式
消除代码之中的不友好;代码运行更快 ;保证运行的安全 ;为新版本的js做好铺垫。
22\. 匿名函数的调用写在匿名函数的内部
``` javascript
(function(argus){
}(argus))
```
## 补充
待补充...
- 前端入门
- 前端入职须知
- 前端自我定位
- pc与手机页面差别
- 前端书单
- 前端种子计划
- 前端技术栈
- ps
- ps入门阶段
- html
- html入门
- html代码规范
- meta
- table
- iframe
- a标签详解
- image
- html代码审查工具
- h5专题
- h5入门
- h5新增属性
- canvas画布教程
- audio/video
- Geolocation
- Websockets
- Web storage
- Communication
- Web Workers
- requestAnimationFrame
- css
- css入门必学
- css代码规范
- 项目字体规范
- css基本位置布局
- css常见样式命名规则
- css代码优化建议
- css常用样式名
- css选择器攻略
- css盒子模型的理解
- css属性继承与默认值
- css代码审查工具
- css中常见的知识盲区
- css3新特性浅谈
- css新特性了解
- border-radius
- background
- transform
- animation
- white-space
- css常用技术
- 文本两端对齐
- css之浮动解决方案
- css优化建议
- 文本超出省略
- img-sprites
- rem布局教程
- 水平居中&垂直居中
- 固宽&变宽布局
- 宽高固定比例的盒模型
- 样式预处理语言
- less教程
- sass教程
- postcss教程
- js
- javascript入门
- js代码规范
- js基础拓展
- js代码审查工具
- js性能优化
- js基本语句
- 基本运算
- 基本语句语法
- js对象
- es6入门
- obj
- Array
- Date
- String
- Boolean
- Number
- Json
- RegExp
- Math
- function
- jquery入门
- jq核心思想
- jq基本语法
- jq插件库汇总
- js常用技术
- break&continue区别
- js对日期转换
- js控制运动-move.js
- 原生js-cookie语法
- ajax请求后回调
- 表单数据序列化
- zepto
- zepto入门
- 百度touchjs
- js编程
- 插件库
- 功能性插件
- pdfjs
- wdatepicker
- qrcoder
- barcode插件
- photoviewer
- hammer.js
- echarts
- 交互组件
- layerjs
- java
- java入门
- java基本语句
- springMVC
- javaweb
- vm模板引擎
- freemarker
- maven教程
- mySql教程
- flex教程
- flex入门
- git教程
- git入门
- git分支
- git-tag管理
- git注意事项
- git-torise入门
- ide-git插件使用
- web
- web兼容
- web兼容思想
- pc端兼容适配文档
- pc端兼容bug汇总
- ie兼容bug汇总
- 手机兼容bug汇总
- web安全
- jeecms
- web存储
- app/h5组件
- 安卓教程
- ios教程
- 前端教程
- rubikx的教程
- 其他
- artTemplate
- tmod使用
- 跨域问题
- markdown教程
- 常用工具
- postman-api调试
- web常识
- 浏览器ua统计
- ui框架
- easyui
- bootstrap
- 入门推荐
- weui
- sui-pc
- sui-mobile
- layerUi