这里列出在项目中常用的ES6相关特性,以便更快的理解和应用ES6。
常用特性
- 作用域控制 let、const
- 模板字符串
- 语法糖 - 箭头函数
- 解构
- 类与模块
- Promise
let & const
const
不可重新赋值的值 (常量、配置项以及引用的组件)let
使用let声明的变量只在语句块内有效
let
的使用场景相对较少的,我们只会在 loop(for,while 循环)及少量必须重定义的变量上用到他
let 的使用场景// 函数体内的变量
function f1() {
let n = 5;
if (true) {
let n = 10;
}
console.log(n); // 5
}
// for循环的初始量
for (let i = 0; i < buttons.length; i++) {
// ...
}
const
由于不可以重新赋值的特性,所以可以做更多语法静态分析方面的优化,从而有更高的执行效率。
const 的使用场景// 定义常量
const REG_GET_INPUT = /^\d{1,3}$/;
// 定义配置项
const config = {
isDev : false,
pubDir: './admin/'
}
// 引入 gulp
const gulp = require('gulp');
模板字符串 Template Strings
增强版的字符串,用反引号(`)标识,支持变量注入与多行文本
//1. 注入变量与方法 |
箭头函数 Arrow Function
使用箭头(=>)进行定义的函数,属于匿名函数(Lambda)一类
箭头函数没有独立执行上下文( this ),所以其内部引用 this 对象会直接访问父级。
|
解构 Destructuring
用于分解方法的参数、数组、对象中的变量
const bookSet = ['UED', 'TB fed', 'Not find']; |
Rest运算符(解构赋值)/ Spread扩展运算符(…)
// 1. rest 得到的是一个真正的数组而不是一个伪数组 |
类与模块 Class & Modules
class
定义一个类//定义类
class Point {
//构造函数
constructor(x, y) {
//实例属性
this.x = x;
this.y = y;
}
//get和set用于对实例属性自定义存取行为
get prop() {
return 'getter';
}
set prop(value) {
console.log('setter: '+value);
}
//实例方法
toString() {
return '(' + this.x + ', ' + this.y + ')';
}
//静态方法
static classMethod() {
return 'hello';
}
//静态属性
static get HuaChen(){
return 'jelly';
}
}
使用 extend
关键字实现类的继承
class ColorPoint extends Point { |
import
模块引入的方式
import name from "module-name" |
export
模块导出或对外提供接口的方式
|
export default
命令其实只是输出一个叫做 default
的变量,所以它后面不能跟变量声明语句。
// 正确 |
Promise
Promise 为异步编程提供统一的解决方案,比传统的回调和事件更加合理有效。
|