es6 相关知识
let和const
-
let
和const
有块级作用域,一个{}就是一个作用域,具有块级作用域的只在自己的作用域里面是有效的。 -
用
var
声明的变量存在变量的提升,let
和const
没有变量的提升。(这里是指没有像let那样的变量提升,其实也是有提升的。)
console.log(a); //所以现在a变量是已经声明了但是没有赋值,所以打印结果为 undefined
var a=2; //用var声明的变量存在变量提升,也就是说 var a会提升到代码的最上面
//如果用let或者const声明变量
console.log(b); //这样会报错哦,只能在声明之后才能使用
let b=1;
-
暂时性死区。ES6明确规定,如果区块中存在
let
和const
命令,这个区块对这些命令声明的变量,从一开始就形成了封闭作用域。凡是在声明之前就使用这些变量,就会报错。
总之,在代码块内,使用let
命令声明变量之前,该变量都是不可用的。这在语法上,称为“暂时性死区
”(temporal dead zone,简称TDZ)。 -
let
和const
不允许重复声明变量 -
const
常量的声明,对于基本数据类型来说一旦声明就必须进行赋值而且它的值不允许进行改变。const声明的只是栈区内容不变,基本数据类型保存在栈区中不可改变;引用数据类型在栈区保存的地址不可改变。
//声明的时候必须要赋值
const a=2;
console.log(a);
//如果不在声明的时候赋值会报错
const a;
a=2;
console.log(a) //报错
//引用数据类型
const person = {
name: '张三',
age: 12,
}
person.name = '里斯'
console.log(person.name); //里斯
3、模板字符串
- 普通字符串
`123`
- 多行字符串
`123
456
`
- 字符串中镶嵌变量
`123+${x}`
4、字符串新增方法
- includes() startsWith() endsWith()
- repeat()
- padStart() padEnd()
- trimStart() trimEnd()
5、扩展运算符
6、数组新增方法
Array.from()
Array.of()
copyWithin()
find() findIndex()
fill()
entries() keys() values()
includes()
flat() flatMap()
7、箭头函数
函数扩展
8、rest参数
形式为...变量名,用于获取函数得多余参数
9、函数默认值
对象扩展
10、属性得简洁表示
11、super关键字
this关键字总是指向函数所在得当前对象。。。。。
12、对象新增方法
Object.is()
Object.assign()
Object.getOwnPropertyDescriptors()
_proto_属性 Object.setPrototypeOf() Object.getPrototypeOf()
Object.keys() Object.values() Object.entries()
Object.fromEntries()
Set和Map数据结构
13、set
- Set.prototype.add(value)
- Set.prototype.delete(value)
- Set.prototype.has(value)
- Set.prototype.clear()
- Set.prototype.keys()
- Set.prototype.values()
- Set.prototype.entries()
- Set.prototype.forEach()
14、Map - Map.prototype.set(key,value)
- Map.prototype.get(key)
- Map.prototype.delete(value)
- Map.prototype.has(value)
- Map.prototype.clear()
- Map.prototype.keys()
- Map.prototype.values()
- Map.prototype.entries()
- Map.prototype.forEach()
class
15、基本语法
16、静态方法
17、继承
Module
18、export
19、import