ECMAScript6
变量声明let
letlet变量不可重复声明
let a = 1
let a = 2 // Duplicate declaration 块级作用域
// 在ES6之前,JS只有全局作用域和函数作用域
{
var a = 'a变量';
}
console.log(a); // 可以正常输出
// ES6加入了块级作用域,如果想声明一个只在块作用域中有效的变量,需要使用let关键字
{
let b = "变量b";
}
//console.log(b); // ReferenceError: b is not defined,let定义的变量的作用域位于块级作用域中不存在变量提升
常量声明 const
const不可被修改
对数组和对象元素的修改,不算对常量的修改
const变量不可重复声明
在声明时就要被初始化
约定:常量一般使用大写
块级作用于
Destructuring 变量解构赋值
数组解构
对象解构
函数解构参数
字符串 String
字符串包含
模板字符串
可有换行,会替换变量
带标签的模板字符串
对象
对象简化写法:属性赋值简化
对象简化写法:方法声明简化
对象属性值的赋值
Object对象
Object.is 判断值是否相同
Object.is 判断值是否相同Object.assign 属性复制
Object.assign 属性复制Object.setPrototypeOf 更改对象原型
Object.setPrototypeOf 更改对象原型函数
获取函数名称
箭头函数 Arrow Function
函数形参初始值
rest参数(可变参数)
Spread扩展运算符
Spread扩展运算符新数据类型:symbol
symbol函数Symbol()创建symbol
Symbol()创建symbol根据字符串创建symbol
symbolSymbol.for创建
Symbol.for创建不可与任何数据类型运算
使用场景:用作唯一方法/属性名
Symbol对象的内置值
Symbol对象的内置值Symbol.hasInstance 控制类型检测
Symbol.hasInstance 控制类型检测Symbol.isConcatSpreadable是否可以被展开
Symbol.isConcatSpreadable是否可以被展开迭代器
Iterator接口
for of循环
自定义类型支持Iterator
生成器
声明和调用
参数传递
实例:解决回调地狱
实例2:实际场景模拟
await和sync
await和syncPromise
实例:文件读取
实例:封装AJAX
Set
Map
面向对象
class
继承
封装
模块化
模块化规范
实现
export和import
export和import统一暴露
默认暴露
通用别名导入方式
解构赋值形式
结构部分别名
导入默认暴露的模块
导入的简便模式:针对默认暴露
最后更新于