类型
- 基础类型
- 字符串(string)
- 数值(Number)
- 布尔类型(Boolean)
- null
- undefined
注意事项:定义变量禁止使用null, 请使用 undefined 或者 void(0);
//Numberconst num = 1;//Stringconst str = 'Hello world';//undefined --goodconst undef = undefined;const undef = void(0);//null//禁止使用 badconst nullValue = null;//Booleanconst bool = true;//ORconst bool = false;
- 复杂类型
- 对象(Object)
- 数组 (Array)
- 函数 (Function) ```javascript //定义一个空对象 const obj = {}; //good const obj = new Object(); // bad
//定义一个空数组 const arr = []; // good const arr = new Array(); // bad
//定义一个函数 var fun = function() {}; //OR var fn = ()=> {};
**引用**<br />禁止使用`var`定义变量,请使用`let`或者`const`定义变量.```javascript// badvar a = 'test';// goodlet a = 'test'; //需要改变的值定义//ORconst a = 'test'; //无需改变的值定义
原型
使用 class,避免直接操作 prototype
//badlet exmp = ()=>{}exmp.prototype.newFun = (){};//goodclass exmp {constructor (){}newFun(){}}
模块
使用标准的 ES6 模块语法 import 和 export
// badconst exmp = require('./exmp');module.exports = exmp;// goodimport exmp from './exmp';export default exmp;// betterimport { exmp } from './exmp';export default exmp;
尽量不要使用**import 的通配符 ,如果是自己写的js**确保你只有一个默认的 export.*
// badimport * as exmp from './exmp'// goodimport exmp from './exmp'
迭代器
禁止使用 iterators ,使用高阶函数例如 forEach() 或 reduce() 替代 for-of
const nums = [1, 2, 3, 4, 5];// badlet index = 0for (let i of nums) {index += i;}// goodlet index = 0;nums.forEach(i => index += i)// betterconst index = nums.reduce((total, i) => total + i, 0);
对象属性
一般情况下,使用 . 访问对象属性, 除非未定义的字段
const test = {a:1,b:2};//badtest['a'];//goodtest.a;//未定义情况let test = {a:1,b:2};test['c'] = 3;
代码注释
为了维护方便尽量在方法名和变量名加上注释。如果您的变量名有语义化就可以不用写注释,但是必须通俗易懂.
eval()
由于 eval 方法比较 evil,所以我们约定禁止使用该方法
with() {}
由于 with 方法会产生神奇的作用域,所以我们也是禁止使用该方法的
for-in 循环
推荐使用 for in 语法,但是在对对象进行操作时,容易忘了检测 hasOwnProperty(key),所以我们启用了 ESLint 的 guard-for-in 选项.
修改内置对象的原型
禁止新增修改内置对象,如 Object 和 Array
代码规范
统一团队的编码规范,有助于代码的维护。
变量命名
当命名变量时,主流分为驼峰式命名(variableName)和下划线命名(variable_name)两大阵营。尽量使用有含有变量名,可以帮助后期维护代码便于维护
// badconst len = 10;// goodconst length = 10;//驼峰式命名const orderList = [];//下划线命名const order_list = [];
私有函数和公共函数定义
我们约定带下划线的变量或函数为私有的,否认为公共的.
// 私有函数或方法const _test = 1;const _testFun = ()=> {};//公共方法const test = 1;const textFun = ()=> {};
运算
因为js存在精度问题,所有我们规定运算使用一下方法,主要用于加减法运算
const num = ((0.1*100) + (0.2*100)) / 100; //=0.3const num = 0.1+0.2 // 0.30000000000000004
BOM
Unicode 字节顺序标记 (BOM) 用来指定代码单元是高字节序还是低字节序。也就是说,是高位在前还是低位在前。UTF-8 不需要 BOM 来表明字节顺序,因为单个字节并不影响字节顺序。
相信不少同学遇到过 BOM 的坑,这里不多说了,切记不要使用 windows 的记事本改代码!
定时器使用尽量使用setTimeout避免使用setInterval
//adviseconst timer = ()=>{setTimeout(()=>{console.log('输出内容')timer();},1000);}// no adviseconst timer = ()=>{setInterval(()=>{console.log('输出内容')},1000);}
