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
let、const与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"

浙公网安备 33010602011771号