ES6的新特性

95 阅读2分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 12 天,点击查看活动详情

ES6,即 ECMAScript6,是一种脚本语言的标准化规范。在 ES6 中,除了新增了 Symbol 数据类型,变量的声明的关键词(let const),Promise、Proxy、箭头函数等等,还有很多新的特性都是面试中常考的基础知识。

变量的解构赋值

操作方式:从数组或者对象中提取值,对变量进行赋值

适用范围:可枚举的对象都可以使用解构赋值(比如:字符串、数组、Map 和 Set(Map和Set也是ES6 新增的))

注:扩展运算符也是 ES6 中新增的

let [a, [b],c] = [1, [2], 3];
console.log(a,b,c)
let [a1, b1, c1, d1] = 'abcd';
console.log(a1,b1,c1,d1)

运行结果:

image.png

还可以利用解构获取数据的长度,以length 字段作为变量名(不使用 length 得到的是 undefined )

let {length} = 'hello';
console.log(length)
let {len} = 'hello';
console.log(len)

运行结果:

image.png

进行模式匹配:如果等号两边的模式相同,就可以对应赋值值。

let [start, ...end] = [1, 2, 3, 4];
console.log(start)
console.log(end)

运行结果:

image.png

Map 和 Set

  • Map 和 Set 都不允许键重复
  • Map初始化需要的是一个二维数组,而Set 需要的是一维数组
  • Map的形式是键值对,键不能修改,值可以修改;Set不能通过迭代器来改变值,因为Set的值就是键

新增函数

  • includes():判断字符串是否包含参数字符串
  • Object.assign() 浅拷贝
    Object.assign(target, source);
  • repeat() 返回指定次数的字符串
  • find() 和 findIndex() 查找数组中符合条件的元素值或索引(原数组不会被修改)

模块化

模块化是在开发脚手架项目中一定会出现的,具体体现在导入和导出

引入:

import ‘模块名称’ from ‘url’;
import  ‘url’;

导出:

let msg = 'hello';
export {msg};

Proxy

Proxy 主要用于创建一个对象的代理,对对象的访问时进行拦截。形式如下:

let proxy = new Proxy(target, handler);
  • target:目标拦截的对象
  • handler:一个对象,用来定制拦截行为