美文网首页
es6几个关键词

es6几个关键词

作者: 前端那些事情 | 来源:发表于2017-09-06 09:31 被阅读24次

es6几个关键词

最近项目中遇坑。对很多es6的关键词理解的也不是特别深。
下面根据代码深入的给大家讲解一下这些关键词.

async 和 await

async用于定义一个异步函数,该函数返回一个Promise,等同于return Promise.resolve(value);

await表示要“等待”异步操作的返回值,也可以用于同步返回值

重点

  • 语义化
  • 将异步操作用同步的写法来完成
  • 返回值是 Promise对象

代码

async function wait(data) {
  return new Promise((resolve, reject) => {
    setTimeout(v => resolve(data), 1000);
  })
}
(async function() {
 
  let res = await wait('test');
  console.log(res);
})();
console.log('start')

顺序执行

使用Promise链
getUser().then(getArticle).then(success);

并发执行

Promise.all([getUser, getArticle]).then(success);

错误处理

AsyncStorage.getItem('uid')
  .then((uid) => {
      dothing('uid')
  })
  .catch(error => {
      console.log(error)
  });

* 和 yield 和 next

ES6 Generators 返回一个迭代器的函数. 那什么是迭代器函数呢.

他语法表现是比普通的function多了个星号*,在其函数体内可以使用yield关键字,yield表示导出的值,函数会在每个yield后暂停.

其提供next的方法来帮助你运行generator函数并得到下一个值.

next方法不仅返回值,它返回的对象具有两个属性:done和value.

value是yield导出的值, 如何done返回false,说明遍历还没有结束,构造器还有状态没有跑完.

更详细解释可以参阅es6tutorial

// 生成器
function *createGenerators() {
    yield 1;
    yield 2;
    yield 3;
}

// 生成器能像正规函数那样被调用,但会返回一个迭代器
let Generators = createGenerators();

console.log(Generators.next().value); // 1
console.log(Generators.next().value); // 2
console.log(Generators.next().value); // 3

Generators.throw(new Error('出错了!'));

assign

ES6 对象提供了Object.assign()这个方法来实现浅复制
在实际项目中,我们为了不改变源对象。一般会把目标对象传为{}

const obj = Object.assign({}, objA, objB)
Object.assign(target, source1, source2);

filter

最早见过Map, filter, Reduce 这些方式是在Lodash里面

// Lodash写法
_.map([1, 2, 3], function(n) { return n * 3; });
// [3, 6, 9]
_.reduce([1, 2, 3], function(total, n) { return total + n; }, 0);
// 6
_.filter([1, 2, 3], function(n) { return n <= 2; });
// [1, 2]

// ES6写法
[1, 2, 3].map(n => n * 3);
[1, 2, 3].reduce((total, n) => total + n);
[1, 2, 3].filter(<= 2);

for-of循环

for of每次循环返回的对象的值,不是对象的index

var someArray = [ "a", "b", "c" ];

for (v of someArray) {
    console.log(v);//输出 a,b,c
}

class static

ES6中添加了对类的支持,引入了class关键字。前端js越来越像后端的语法。
继承,父类方法的调用,实例化

class Point {
  constructor() {
    // ...
  }

  toString() {
    // ...
  }

  toValue() {
    // ...
  }
}

// 等同于

Point.prototype = {
  constructor() {},
  toString() {},
  toValue() {},
};

同学们对于es6的语法还有什么想要了解的。可以在底下评论哦。。

本人长期维护的前端公众号欢迎大家关注


前端那些事

相关文章

  • es6几个关键词

    es6几个关键词 最近项目中遇坑。对很多es6的关键词理解的也不是特别深。下面根据代码深入的给大家讲解一下这些关键...

  • ES6之面向对象

    关键词:面向对象 es6新增了类这个语法糖

  • let/const

    let/const是ES6新增的声明变量的关键词,和ES5的var相比有以下几个特点 基本使用 块级作用域 不存在...

  • ES6模版字符串

    初探ES6:字符串模板 && 标签模板 关键词:``,${} 字符串模板: 在ES6之前我们要在html或者con...

  • 几个关键词

    昨天我给自己留下一封长长的信,信里说到,19年下半年的关键词是,接纳、信心、感恩,19年年初的关键词“勇敢”,我已...

  • JS中的this

    这篇文章不讨论es6的let和const关键词,它们比较特殊,使用let和const关键词声明的变量和常量,会形成...

  • js中定义变量之②var let const的区别

    var 上一篇文章有讲过,是js定义变量的关键词。 但是在es6中,新添加了两个关键词,用于变量声明的关键词:le...

  • ES6 几个语法。

    )])1.定义变量使用let 代替var ---作用域 { let name = 'xiaoming' } co...

  • 使用Set进行数组去重

    关键词:ES6,set,Array.from(set),[...set],数组去重 使用Set进行数组去重方法,如...

  • scala几个关键词

    public/private/protected的具体区别: 在说明这四个关键字之前,先对class之间的关系做一...

网友评论

      本文标题:es6几个关键词

      本文链接:https://www.haomeiwen.com/subject/eojmjxtx.html