前端面试-说说你常用的ES6新特性

ES6新特性

1.变量声明const 和 let
2.字符串模板
3.箭头函数
4.类的引入
5.参数默认值,不定参数,拓展参数
6.import和 export
7.promise、async/await介绍
8.set和map
9.for-in 和 for-of

1.变量声明 constlet

作用:
1.防止全局变量泄露
2.防止变量提升带来的覆盖问题

let:作用类似于var,用来声明变量,但是所声明的变量,只在let命令所在的代码块内有效

const:声明常量,一旦声明不可修改,不可重复声明

  • 对于简单类型的数据(数值、字符串、布尔值),值就保存在变量指向的那个内存地址,因此等同于常量。
  • 对于复合类型的数据(主要是对象和数组),变量指向的内存地址,保存的只是一个指向实际数据的指针,const只能保证这个指针是固定的(即总是指向另一个固定的地址),不能保证指向的数据结构不可变。

如果要保证指向的数据结构不可变,需要自行封装。

2.字符串模板

在一些函数中我们经常会用到字符串的拼接
在ES6中可以使用 新的语法 ${NAME} 并将它放到反引号中即可实现拼接

3.箭头函数

箭头函数与ES5中的普通函数最大的区别就是改变了函数中this的指向

  • 普通函数this指向函数体前面的事件对象
  • 箭头函数则指向函数上下文中this所指的对象

4.类的引入

在ES6 中引入了类的概念,创造一个类
首先注意一点:class没有预解析,实例化一定要放在下面
在类中可以通过constructor构造函数,new一个实例的时候,构造函数自动执行
在class中,extends就代表继承的意思,super就是指向父类的构造函数,指代了整个prototype对象或者proto指针指向对象。

5.参数默认值,不定参数,拓展参数

在ES6中可以直接在函数声明的过程中设置默认参数

var link = function(height = 50, color = 'red', url = 'http://azat.co') {
  ...
}

6.import和 export

export 可以用来暴露方法和变量

import {port, getAccounts} from 'module';
console.log(port); // 3000

import 需要用 import {name} from 'xxx’语法导入

import * as service from 'module';
console.log(service.port); // 3000

7.promise、async/await介绍

ES6中出现了promise异步函数

var wait1000 =  new Promise((resolve, reject)=> {
  setTimeout(resolve, 1000);   
}).then(()=> {
  console.log('Yay!');
});

其中,resolve代表执行回调成功的函数
而reject代表执行回调失败的函数

8.setmap

  • set元素不允许重复
    set可用作数组去重
new Set([11,22,33,22])
  • map类似对象,但是它的 key可以为任意数据类型

9.for-in 和 for-of

  • for in 取 key;for of 取 value
  • for of只能用于数组遍历,for in 还可以用于对象属性的遍历

你可能感兴趣的:(前端学习)