标签:全局 变量声明 不用 作用 大括号 应用 end 导入模块 -o
CMAScript 6 简介:CMAScript 6.0(以下简称 ES6)是 JavaScript 语言的下一代标准,已经在 2015 年 6 月正式发布了。它的目标,是使得 JavaScript 语言可以用来编写复杂的大型应用程序,成为企业级开发语言。
刚开始使用 vue 或者 react,很多时候我们都会把 ES6 这个大兄弟加入我们的技术栈中。以下是我们在日常开发中比较常用的特性。
1.变量声明 const 和 let
我们都是知道在 ES6 以前,var 关键字声明变量。无论声明在何处,都会被视为声明在函数的最顶部(不在函数内即在全局作用域的最顶部)。这就是变量提升例如:
以上的代码实际上是:
所以无论如何 test 都会被创建声明
但是在 ES6 中新增了 let 和 const 命令。let 表示变量、const 表示常量。let 和 const 都是在它们所在的块级作用域中有效。看以下代码:
const 声明的常量不能被修改
let 的作用域是在它所在当前代码块,不会存在变量提升。for 循环的计数器,就很合适使用 let 命令。列入以下代码
2.函数
函数默认参数
在 ES5 我们给函数定义参数默认值:
但当 num 传入为0的时候就是 false,此时 num = 200 与我们的实际要的效果明显不一样。
ES6 为参数提供了默认值。在定义函数时便初始化了这个参数,以便在参数没有被传递进去时使用。
箭头函数
ES6 很有意思的一部分就是函数的快捷写法。也就是箭头函数。
箭头函数最直观的三个特点:
· 不需要 function 关键字来创建函数
· 省略 return 关键字
· 继承当前上下文的 this 关键字
3.更方便的数据访问--解构
数组和对象是 JS 中最常用也是最重要表示形式。为了简化提取信息,ES6 新增了解构,这是将一个数据结构分解为更小的部分的过程。
ES5 中我们提取对象中的信息形式如下:
ES6 中我们从对象或者数组里取出数据存为变量,例如
4.Spread Operator 展开运算符
ES6 中的另外一个特性就是 Spread Operator 三个点儿...
组装对象或者数组
想获取数组或者对象除了前几项或者除了某几项的其他项
对于 Object 而言,还可以用于组合成新的 Object。(ES2017 stage-2 proposal) 当然如果有重复的属性名,右边覆盖左边
5.import 和 export
import 导入模块、export 导出模块
导入与导出的一些细节:
1.当用 export defaultpeople 导出时,就用 import people 导入(不带大括号)
2.一个文件里,有且只能有一个 exportdefault。但可以有多个 export。
3.当用 export name 时,就用 import { name } 导入(记得带上大括号)
4.当一个文件里,既有一个 exportdefault people, 又有多个 export name 或者 export age 时,导入就用 import people, { name, age}
5.当一个文件里出现 n 多个 export 导出很多模块,导入时除了一个一个导入,也可以用 import * asexample
6.Promise
Promise 是异步编程的一种解决方案,比传统的解决方案——回调函数和事件——更合理和更强大。它由社区最早提出和实现,ES6 将其写进了语言标准,统一了用法,原生提供了 Promise 对象。
所谓 Promise,简单说就是一个容器,里面保存着某个未来才会结束的事件(通常是一个异步操作)的结果。从语法上说,Promise 是一个对象,从它可以获取异步操作的消息。Promise 提供统一的 API,各种异步操作都可以用同样的方法进行处理。
基本用法:
Promise 构造函数接受一个函数作为参数,该函数的两个参数分别是 resolve 和 reject。它们是两个函数,由 JavaScript 引擎提供,不用自己部署。
resolve 函数的作用是,将 Promise 对象的状态从“未完成”变为“成功”(即从 pending 变为 resolved),在异步操作成功时调用,并将异步操作的结果,作为参数传递出去;reject 函数的作用是,将 Promise 对象的状态从“未完成”变为“失败”(即从 pending 变为 rejected),在异步操作失败时调用,并将异步操作报出的错误,作为参数传递出去。
以上整理的是比较常见的 es6 特性,更多 es6 的内容大家可以进入到官方文档中学习。
【海说软件接受各种技术咨询及开发业务】
-END-
标签:全局 变量声明 不用 作用 大括号 应用 end 导入模块 -o
原文地址:http://blog.51cto.com/13476205/2064908