1. ECMAScript 6
ECMAScript 6.0(以下简称ES6)是JavaScript语言的下一代标准,已经在2015年6月正式发布了。
Ecmascript 是 JavaScript 语言的标注规范。
JavaScript 是 Ecmascript 规范的具体实现,具体实现取决于各大浏览器厂商的支持进度。
Ecmascript 6 也被称作 Ecmascript 2015。
各大浏览器厂商对于最新的 Ecmascript 6 标准支持可以参照:http://kangax.github.io/compat-table/es6/。
对于不支持 ES6 的环境,可以使用一些编译转码工具做转换处理再使用,例如 babel。
1.1 变量声明let与const
let:
- let 类似于 var,用来声明变量
- 通过 let 声明的变量不同于 var,只在 let 命令所在的代码块内有效(块级作用域)
- let 声明的变量不存在变量提升
- let不允许在相同作用域内,重复声明同一个变量
1 | // 1. let声明的变量不存在预解析 |
const:
- const声明一个只读的常量。一旦声明,常量的值就不能改变
- const 声明必须初始化
- const的作用域与let命令相同:只在声明所在的块级作用域内有效
- const命令声明的常量也是不提升,必须先声明后使用
- const声明的常量,也与let一样不可重复声明
1 | // const用来声明常量 |
1.2 变量的解构赋值
ES6 允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构(Destructuring)。
1.2.1 数组解构
1 | let [a, b, c] = [1, 2, 3]; ->1 2 3 |
1.2.2 对象解构
1 | // 1. 赋值与顺序无关 |
1.2.3 函数参数解构
1 | function f (p1, { p2 = 'aa', p3 = 'bb' }) { |
1.2.4 字符串解构
1 | let [a, b, c, d, e, length] = "hello"; |
1.3 字符串
实用方法:
1 | includes(String):返回布尔值,判断字符串中是否包含指定的字串。参数一:匹配的字串;参数二:从第几个开始匹配 |
模板字符串:
1 | // 普通拼接 |
- 模板字符串(template string)是增强版的字符串,用反引号(`)标识
- 它可以当作普通字符串使用,也可以用来定义多行字符串,或者在字符串中嵌入变量
- 如果使用模板字符串表示多行字符串,所有的空格和缩进都会被保留在输出之中
- 模板字符串中嵌入变量,需要将变量名写在
${}
之中- 大括号内部可以放入任意的JavaScript表达式,可以进行运算,以及引用对象属性
- 大括号内部还可以调用函数
1.4 数组
方法:
1 | Array.from() 将一个伪数组转为一个真正的数组 |
实例方法:
ES6提供三个新的方法——entries(),keys()和values()——用于遍历数组.
可以用 for...of
循环进行遍历,唯一的区别是 keys()
是对键名的遍历、values()
是对键值的遍历,entries()
是对键值对的遍历。
1 | const arr = [ |
1.5 函数的扩展
1.5.1 参数默认值
1 | function foo(param) { |
1.5.2 参数解构赋值
1 | function foo({uname = 'lisi', age = 13} = {}) { |
1.5.3 rest 参数(剩余参数)
1 | function foo(a, b, ...param) { |
1.5.4 扩展运算符…
1 | function foo(a, b, c, d, e, f, g) { |
1.5.5 箭头函数
1 | var f = v => v |
1.6 类与继承
1 | class Animal { |
1.7 对象
属性的简洁表示法:
1 | var foo = 'bar'; |
2. Babel
第一:在项目根目录下创建一个 .babelrc
文件,写入以下内容:
1 | { |
第二:安装对应的转码规则:
1 | # ES2015转码规则 |
第三:将 .babelrc
文件中修改为以下内容:
1 | { |
第四步(从第四步开始,前三部必不可少):
- babel-cli:命令行转码
- babel-node:babel-cli工具自带一个babel-node命令,提供一个支持ES6的REPL环境
- babel-register:实时转码,所以只适合在开发环境使用
- babel-core:如果某些代码需要调用Babel的API进行转码,就要使用babel-core模块
babel-cli:
一种使用方式就是全局安装:npm install -g babel-cli
(可以通过 npm root -g
查看全局包安装目录),
只要全局安装了 babel-cli
,则会在命令行中多出一个命令:babel
。
这里如果使用全局安装的 babel-cli
进行转码是没有问题的,但是问题是如果一旦项目给了别人,别人不知道你使用了这个转码工具,所以解决方式就是将 babel-cli
安装到本地项目中:
1 | npm install --save-dev babel-cli |
这种第三方命令行工具如果安装到本地项目,会在 node_modules
中生成一个目录:.bin
,然后第三方命令行工具会将对应的可执行文件放到该目录中。这样的话,就可以直接在本地项目中使用该第三方命令行工具了。
对于如何使用,则可以通过配置 package.json
文件中的 scripts
字段来配置使用:
1 | { |
babel-register(适合开发阶段,实时编码转换):
第一:安装 babel-register
1 | npm install --save-dev babel-register |
第二:添加一个傀儡文件(main.js):
1 | require('babel-register') |
第三:使用 node 执行 main.js
,而不是你的入口文件。
-------------本文结束感谢您的阅读-------------
本文标题: ECMAScript6
本文链接: https://wgy1993.gitee.io/archives/fa865a02.html
版权声明: 本作品采用 CC BY-NC-SA 4.0 进行许可。转载请注明出处!
