es6
学习地址:https://babeljs.io/docs/en/learn

es6以及开始在业务中大量使用,会简化我们很多的繁杂代码、增加可读性

默认参数

  1. function test(a = 'world') {
  2. console.log(`print:hello,${a}`);
  3. }
  4. test();
  5. // print:hello,world

箭头函数

  • 更简短的函数并且不绑定this。

箭头函数与普通函数不同之处有:

  1. 箭头函数没有 this,它会从自己的作用域链的上一层继承 this(因此无法使用 apply / call / bind 进行绑定 this 值);
  2. 不绑定 arguments,当在箭头函数中调用 aruguments 时同样会向作用域链中查询结果;
  3. 不绑定 super 和 new.target;
  4. 没有 prototype 属性,即指向 undefined;
  5. 无法使用 new 实例化对象,因为普通构造函数通过 new 实例化对象时 this 指向实例对象,而箭头函数没有 this 值,同时 箭头函数也没有 prototype。 ``javascript function test(a = 'world') { console.log(print:hello,${a}`); }

const test = (a = ‘world’) => { console.log(print:hello,${a}); };

  1. <a name="e50ua"></a>
  2. ### 新增类,基于原型函数的继承
  3. - [新增Class的使用和理解](https://www.yuque.com/webkubor/blog/bxbc4w)
  4. <a name="rUB8R"></a>
  5. ### 加入let块作用域、const静态声明
  6. `const` 用于声明常量,`let` 用于声明变量,他们都是块级作用域<br />cosnt 和let的区别:<br />1、const 用于声明常量,其值一旦被设定不能再被修改,否则会报错。<br />2、值得一提的是:const 声明不允许修改绑定,但允许修改值。这意味着当用 const 声明对象时,其键值对中的value值可被改变的
  7. ```javascript
  8. const a = 1;
  9. let b = 1;

模板字符串

  1. let a = 'hello';
  2. let b = 'hello';
  3. console.log('print:' + a + b);
  4. let c = `print:${a}${b}`
  5. // 注意这个不是引号,键盘 esc 下面那个按键

解构赋值

  1. const obj = { key: 'umi', author: 'sorrycc' };
  2. console.log(obj.key);
  3. const { key } = obj;
  4. // 等价于 `const key = obj.key;`
  5. const obj2 = { key };
  6. // 等价于 `const obj2 = { key: key };`;
  7. // 数组也有类似的用法
  8. const arr = [1, 2];
  9. const [foo, bar] = arr;
  10. console.log(foo);
  11. // 1

includes

  1. const condition = [1,2,3,4];
  2. if( condition.includes(type) ){
  3. //...
  4. }

扁平化数组

  1. const deps = {
  2. '采购部':[1,2,3],
  3. '人事部':[5,8,12],
  4. '行政部':[5,14,79],
  5. '运输部':[3,64,105],
  6. }
  7. let member = Object.values(deps).flat(Infinity);

其中使用Infinity作为flat的参数,使得无需知道被扁平化的数组的维度。
补充
flat方法不支持IE浏览器。

空值合并运算

  1. if((value??'') !== ''){
  2. //...
  3. }

模块导入导出

  1. // 从 antd 中导入按钮组件
  2. import { Button } from 'antd';
  3. // 导出一个方法,这样就能在其他文件使用 `import` 导入使用了
  4. const test = (a = 'world') => {
  5. console.log(`print:hello,${a}`);
  6. };
  7. export default test;

展开扩展符

数组组装

  1. const arr = ['umi'];
  2. const texts = [...arr, 'dva'];
  3. // texts => ['umi', 'dva']

取出赋值

  1. const arr = ['umi', 'dva', 'antd'];
  2. const [umi, ...other] = arr;
  3. // 前面已经提过析构赋值,所以第一项会赋值给 `umi`,剩下的会被组合成一个 `other` 数组
  4. console.log(umi);
  5. // umi
  6. console.log(other);
  7. // (2)['dva', 'antd']

组合新对象

用于组合新的对象,key 相同时,靠后展开的值会覆盖靠前的值:

  1. const obj = { a: 1, b: 2 };
  2. const obj2 = { b: 3, c: 4 };
  3. const obj3 = { ...obj, ...obj2 };
  4. // obj3 => { a: 1, b: 3, c: 4 }