<-- home

ES6 语法

📒 var,let 和 const

📄 块级作用域

📄 不存在变量提升

📄 暂时性死区

📄 不可重复声明

📄 ES6 声明的变量不会挂在顶层对象

📄 const 命令注意点

  • let 可以先声明稍后赋值;而 const 声明之后必须立马赋值,否则会报错
  • const声明了简单的数据类型就不能更改了;声明了引用类型(数组,对象等),指针指向的地址不能更改,但是内部的数据可以更改的

📄 let 和 const 使用场景

  • let使用场景:变量,用以代替var
  • const使用场景:常量、声明匿名函数、箭头函数的时候。

📒 解构赋值

📄 数组

📄 对象

📄 字符串

📄 数值和布尔值

📒 字符串扩展

📒 数值扩展

📒 函数扩展

📄 rest 参数

  • ES6 中引入了 rest 参数(形式为 …变量名),用于获取函数的多余参数,获取后的格式为一个数组。

📄 箭头函数

  • 使用了箭头函数后,这个函数里面就没有自己的 this,里面所出现的 this 是外部函数的 this,而不是指向的 this,这种情况也称为 this 指向的固定化。

📄 双冒号运算符

  • 改变 this 指向,即:双冒号左边的对象是右边函数中的 this。

📄 尾调用优化

  • 尾调用:指某个函数的最后一步调用了一个函数,即:return y(x); 的严格格式。
  • 尾调用优化:每一次函数调用都会在内存中形成一个“调用记录”,又称“调用帧”,保存调用位置和内部变量等信息,所有的调用帧称之为 调用栈,如果内部函数用到外部函数的变量,就不会进行尾调用优化。
  • 尾递归:函数调用自身,称之为递归,尾调用自身,称之为尾递归。

📒 数组扩展

📄 数组扩展运算符

📄

📒 对象扩展

📄 属性名表达式

📄 对象的扩展运算符

📄 对象的新增方法

// 1.比较两个值是否相等 可比较特殊的字符
Object.is()

// 2.用于的对象的合并,将源对象的所有可枚举的属性复制到目标对象中,不拷贝继承迭代属性
// 若属性名相同,则后面对象的属性值会覆盖前面的属性值
Object.assign()

// 3.返回指定对象所有自身属性(非继承属性)的描述对象
Object.getOwnPropertyDescriptors()

// 4.创建一个新对象,并指定新对象的 __proto__ 指向
// 语法 Object.create(proto); 第一个参数为新对象的原型指向
Object.create()

// 5.设置指定对象的原型对象,并返回当前对象
// 语法:Object.setPrototypeOf(object,prototype);
Object.setPrototypeOf()

// 6.返回指定对象的原型对象
Object.getPrototypeOf()

// 7
// Object.keys(obj) 
// 返回一个数组,成员是参数对象自身的(不含继承的)所有可遍历属性的键名
Object.keys() 

// Object.values()
// 返回一个数组,成员是参数对象自身的(不含继承的)所有可遍历属性的属性值
Object.values() 

// Object.entries() 不支持IE
// 返回一个二维数组,每一个数组项是参数对象自身的(不含继承的)所有可遍历属性的键值对形成的数组,忽略 Symbol
Object.entries()

// 8. Object.fromEntries() 方法是 Object.entries() 的逆操作,
//    用于将一个键值对数组转换成一个键值对形式的对象
// 注:只兼容火狐浏览器
Object.fromEntries()

📒 Symbol

/*
 1. Symbol 值通过 Symbol()函数生成
 2. Symbol 函数可以接受一个字符串作为参数,表示对Symbol实例的描述
 3. Symbol 可以显式转换成字符串,布尔值,但不能转换成数字	
*/
let si = Symbol('foo')
console.log(si)// Symbol(foo)

/*用法?*/
let abc = Symbol('abc');
let obj = {
    [abc]:'456',
    'abc':'457',
}

📒 Set 和 Map 数据结构

📒 Promise 对象

📒 async 函数

📒 类 class

📒 module 模块