谈谈对ES6的理解

1,219 阅读4分钟

说说对 es6 的理解

语法糖(箭头函数,类的定义,继承),以及一些新的扩展(数组,字符串,对象,方 法等),对作用域的重新定义,以及异步编程的解决方案(promise,async, await)、解构赋值的出现

1 块级作用域绑定

2 字符串和正则表达式

3 函数

4 扩展对象的功能性

5 解构:使数据访问更便捷

6 Symbol 和 Symbol 属性

7 Set 集合与 Map 集合

8 迭代器(Iterator)和生成器(Generator)

9 JavaScript 中的类

10 改进数组的功能

11 Promise 与异步编程

12 代理(Proxy)和反射(Peflection)

13 用模块封装代码

ES6 的了解

es6 是一个新的标准,它包含了许多新的语言特性和库,是 JS 最实质性的一次升级。

比如’箭头函数’、’字符串模板’、’generators(生成器)’、’async/await’、’解构赋 值’、’class’等等,还有就是引入 module 模块的概念。

箭头函数 可以让 this 指向固定化,这种特性很有利于封装回调函数

(1)函数体内的 this 对象,就是定义时所在的对象,而不是使用时所在的对象。

(2)不可以当作构造函数,也就是说,不可以使用 new 命令,否则会抛出一个错 误。

(3)不可以使用 arguments 对象,该对象在函数体内不存在。如果要用,可以用 Rest 参数代替。

(4)不可以使用 yield 命令,因此箭头函数不能用作 Generator 函数。

async/await 是写异步代码的新方式,以前的方法有回调函数和 Promise。

async/await 是基于 Promise 实现的,它不能用于普通的回调函数。async/await 与 Promise 一样,是非阻塞的。

async/await 使得异步代码看起来像同步代码,这正是它的魔力所在。

说说你对 Promise 的理解

Promise 是异步编程的一种解决方案,比传统的解决方案——回调函数 和事件监听——更合理和更强大。

所谓 Promise,简单说就是一个容器,里面保存着某个未来才会结束的事件(通常是 一个异步操作)的结果。从语法上说,Promise 是一个对象,从它可以获取异步操作 的消息。Promise 提供统一的 API,各种异步操作都可以用同样的方法进行处理。

Promise 对象有以下两个特点:

  1. 对象的状态不受外界影响,Promise 对象代表一个异步操作,有三种状态:Pending(进行中)、Resolved(已完成,又称 Fulfilled)和 Rejected(已失败)

2.一旦状态改变,就不会再变,任何时候都可以得到这个结果

箭头函数的作用域上下文和 普通函数作用域上下文 的区别

箭头函数其实只是一个密名函数的语法糖,区别在于普通函数作用域中的 this 有特定 的指向,一般指向 window,而箭头函数中的 this 只有一个指向那就是指当前函数所 在的对象,其实现原理其实就是类似于之前编程的时候在函数外围定义 that 一样,用 了箭头函数就不用定义 that 了直接使用 this

es6 如何转为 es5?

ECMAScript 6(ES6)的发展速度非常之快,但现代浏览器对 ES6 新特性支持度不 高,所以要想在浏览器中直接使用 ES6 的新特性就得借助别的工具来实现。

Babel 是一个广泛使用的转码器,babel 可以将 ES6 代码完美地转换为 ES5 代码, 所以我们不用等到浏览器的支持就可以在项目中使用 ES6 的特性。

babel 6 与之前版本的区别:

之前版本只要安装一个 babel 就可以用了,所以之前的版本包含了一大堆的东西,这 也导致了下载一堆不必要的东西。

但在 babel 6 中,将 babel 拆分成两个包:babel-cli 和 babel-core。

如果你想要在 CLI(终端或 REPL)使用 babel 就下载 babel-cli,

如果想要在 node 中使用就下载 babel-core。 babel 6 已结尽可能的模 块化了,

如果还用 babel 6 之前的方法转换 ES6,它会原样输出,并不会转化,因为 需要安装插件。如果你想使用箭头函数,那就得安装箭头函数插件 npm install babel-plugin-transform-es2015-arrow-functions。