Javascript 编码约定(编码规范)


Posted in Javascript onMarch 11, 2018

1、使用 strict 模式

在一个作用域(包括函数作用域、全局作用域)中,可以使用

"use strict";

来开启 strict 模式。

2、缩进

用 Tab 键进行代码缩进,以节约代码大小,使用4个空格的宽度来进行缩进(JSLint 建议)。

3、符号

1) 大括号

与语句放同一行,放于最后面;仅有一行语句,也使用大括号:

if (true) {
  //true
} else {
  //false
}
while (true) {
  //alert(1);
}

2) 空格

在逗号、分号、冒号后加空格
在操作符前后加空格
在大括号开始符之前
在大括号结束符和 else、while 或 catch 之间
在 for 的各个部分
如:

var a = [1, 2, 3];
var obj = {
  name: 'name',
  value: 'value'
};
for (var i = 0; i < 10; i++) {}
function func(a, b, c) {}

c = a + b;
if (a && b || c) {
  //if
} else {
  //else
}

try {
  //try
} catch(err) {
  //catch
}

3) 所有语句结束后,使用 ; 号结束

4、命名

对象:使用驼峰式,如:MyClass
方法、变量:使用混合式,如:getName(), myName
常量:大写加下划线,如:MY_NAME

5、单一 var 模式

只使用一个 var 在函数顶部进行变量声明,作用如下:

1) 提供一个单一的地址已查找到函数需要的所有局部变量
2) 防止出现变量在定义前就被使用的逻辑错误
3) 帮助牢记要声明变量,尽可能少地使用全局变量
4) 更少的编码

function func() {
  var a = 1,
    b = 2, 
    sum = a + b,
    obj = {
      name: 'name',
      value: 'value'
    },
  $btn = $('#btn');
  //函数体
}

6、循环

1) for 循环

var i, arr = [];
for (i = arr.length; i--;) {
  //arr[i];
}

注:

for (var i = 0; i < document.getElementsByName().length; i++) {
  //document.getElementsByName()[0];
}

这种方式每次对 i 进行长度比较的使用对会进行 document 的查询,而通常 DOM 操作是非常耗时的。

2) while 循环

var arr = [], 
  i = arr.length;
while (i--) {
  //处理
}

3) for-in 循环

var i,
  hasOwn = Object.prototype.hasOwnProperty;
for (i in man) {
  if (hasOwn.call(man, i)) { //过滤
    console.log(i, ':', man[i]);
  }
}

7、switch 选择

switch (num) {
case 0:
  //do something
  break;
case 1:
  //do something
  break;
...
default:
  //do default
}

建议使用:

var obj = {
  '0': function() {
    //do somethins
  },
  '1': function() {
    // do somethis
  }, ...
}
if (obj.hasOwnProperty(num)) {
  obj[num]();
} else {
  //do default
}

8、使用 parseInt() 的数值约定

1) 每次都具体指定进制参数:

var month = '09', day = '08';
month = parseInt(month, 10); //不加进制参数便会转换为八进制
day = parseInt(day, 10);

2) 其他常用的将字符串转换为数值的方法:

+'08';
Number('08');

9、字面量模式

不建议使用构造函数来定义:

// built in constructors (avoid)
var o = new Object();
var a = new Array();
var re = new RegExp('[a-z]', 'g');
var s = new String();
var n = new Number();
var b = new Boolean();
throw new Error('message');

建议使用更优的字面量模式:

// literals and primitives (prefer)
var o = {};
var a = [];
var re = /[a-z]/g;
var s = '';
var n = 0;
var b = false;
throw {
  name: 'Error',
  message: 'message'
}

10、其他

1) 变量内的简写单词如果在开头则全小写:xmlDocument,如果不在开头则全大写:loadXML
2) 变量必须是有意义的英文,禁止拼音

Javascript 相关文章推荐
js获取IP和PcName(IE)在vs中可用
Aug 02 Javascript
了不起的node.js读书笔记之node的学习总结
Dec 22 Javascript
Windows系统下安装Node.js的步骤图文详解
Nov 15 Javascript
JavaScript自定义浏览器滚动条兼容IE、 火狐和chrome
Jan 05 Javascript
JS跳转手机站url的若干注意事项
Oct 18 Javascript
Node层模拟实现multipart表单的文件上传示例
Jan 02 Javascript
Vue不能观察到数组length的变化
Jun 08 Javascript
vue-cli3 项目从搭建优化到docker部署的方法
Jan 28 Javascript
vue中组件的3种使用方式详解
Mar 23 Javascript
layui使用数据表格实现购物车功能
Jul 26 Javascript
React学习之受控组件与数据共享实例分析
Jan 06 Javascript
你可能从未使用过的11+个JavaScript特性(小结)
Jan 08 Javascript
JavaScript获取移动设备型号的实现代码(JS获取手机型号和系统)
Mar 10 #Javascript
js经验分享 JavaScript反调试技巧
Mar 10 #Javascript
webpack打包node.js后端项目的方法
Mar 10 #Javascript
webpack external模块的具体使用
Mar 10 #Javascript
webpack组织模块打包Library的原理及实现
Mar 10 #Javascript
浅谈webpack组织模块的原理
Mar 10 #Javascript
Vuex实现计数器以及列表展示效果
Mar 10 #Javascript
You might like
PHP实现163邮箱自动发送邮件
2016/03/29 PHP
ExtJS Window 最小化的一种方法
2009/11/18 Javascript
JavaScript window.document的属性、方法和事件小结
2012/10/24 Javascript
js显示时间 js显示最后修改时间
2013/01/02 Javascript
div模拟滚动条效果示例代码
2013/10/16 Javascript
原生JS实现加入收藏夹的代码
2013/10/24 Javascript
JQuery中clone方法复制节点
2015/05/18 Javascript
JavaScript函数的调用以及参数传递
2015/10/21 Javascript
JS去掉字符串前后空格、阻止表单提交的实现代码
2017/06/08 Javascript
浅谈Angular4实现热加载开发旅程
2017/09/08 Javascript
微信小程序显示下拉列表功能【附源码下载】
2017/12/12 Javascript
vue、react等单页面项目应该这样子部署到服务器
2018/01/03 Javascript
基于element-ui组件手动实现单选和上传功能
2018/12/06 Javascript
java和js实现的洗牌小程序
2019/09/30 Javascript
jQuery 动画与停止动画效果实例详解
2020/05/19 jQuery
uniapp实现可滑动选项卡
2020/10/21 Javascript
Javascript文本框脚本实现方法解析
2020/10/30 Javascript
[04:13]2014DOTA2国际邀请赛 专访DC目前形势不容乐观
2014/07/12 DOTA
Python中DJANGO简单测试实例
2015/05/11 Python
Python sqlite3事务处理方法实例分析
2017/06/19 Python
Python数据持久化shelve模块用法分析
2018/06/29 Python
在Python中过滤Windows文件名中的非法字符方法
2019/06/10 Python
Django使用Jinja2模板引擎的示例代码
2019/08/09 Python
常用的四种CSS透明属性介绍
2014/04/12 HTML / CSS
美国女士泳装店:Swimsuits For All
2017/03/02 全球购物
英国打印机墨盒销售网站:Ink Factory
2019/10/07 全球购物
亚洲领先的旅游体验市场:Voyagin
2019/11/23 全球购物
机械系大学毕业生推荐信
2013/11/27 职场文书
检察官就职演讲稿
2014/01/13 职场文书
迟到检讨书400字
2014/01/13 职场文书
个人求职信范例
2014/01/29 职场文书
《世界多美呀》教学反思
2014/03/02 职场文书
广场舞大赛策划方案
2014/05/31 职场文书
2014年前台文员工作总结
2014/12/08 职场文书
师德承诺书2015
2015/04/28 职场文书
学习心得体会
2019/06/20 职场文书