ES6知识点

一、ES6与JavaScript的关系

1、ECMAScript 和 JavaScript 的关系是,前者是后者的规格,后者是前者的一种实现(另外的 ECMAScript 方言还有 JScript 和 ActionScript)。

二、let 和 const 命令

1、let 声明的变量仅在块级作用域内有效。用法类似于var。

2、let 不允许在相同作用域内,重复声明同一个变量。

3、ES5只有全局作用域和函数作用域,ES6新增块级作用域

4、const 声明一个只读的常量。一旦声明,常量的值就不能改变。只声明不赋值,就会报错。

5、const的作用域与let命令相同:只在声明所在的块级作用域内有效。

6、const 实质是变量指向的那个内存地址锁表村的数据不得改动。

7、ES6 一共有 6 种声明变量的方法:var、functio、let、const、import、class

letconst与var 的区别?

1.let和var是声明变量,const是声明常量

什么时候提出??var是ES5提出的,let和const是ES6提出的。

2.let和const不存在变量提升

1)var声明的变量存在变量提升(将变量提升到当前作用域的顶部)。即变量可以在声明之前调用,值为undefined。

2)let和const不存在变量提升。即它们所声明的变量一定要在声明后使用,否则报ReferenceError错。

3.是否允许重复声明变量?

var允许重复声明变量。let和const在同一作用域不允许重复声明变量。

4.块级作用域

块级作用域存在于
1)const和let
2)花括号{}

5.是否存在暂时性死区?

let和const存在暂时性死区。即只要块级作用域内存在let命令,它所声明的变量就“绑定”(binding)这个区域,不再受外部的影响。

三、变量的解构赋值

1、数组的解构赋值

2、对象的解构赋值

两者区别:对象的解构与数组有一个重要的不同。数组的元素是按次序排列的,变量的取值由它的位置决定;而对象的属性没有次序,变量必须与属性同名,才能取到正确的值。

四、字符串的扩展

五、关键字super

1、this关键字总是指向函数所在的当前对象,ES6 又新增了另一个类似的关键字super,指向当前对象的原型对象。
例:

const proto = {
foo: 'hello'
};

const obj = {
foo: 'world',
find() {
return super.foo;
}
};

//该Object.getPrototypeOf()方法返回[[Prototype]]指定对象的原型(即内部属性的值)。
Object.setPrototypeOf(obj, proto);
obj.find() // "hello"

  

posted @ 2020-06-17 15:54  浅笑若梨  阅读(136)  评论(0)    收藏  举报