ES6中的一些新特性,一篇就够了

这篇博客详细介绍了ES6中的新特性,包括var、let、const的区别,数组和对象的拓展,如扩展运算符、Array.from()和Array.of()等,函数的新增特性,Set和Map的使用,Promise的异步处理,Generator的流程控制,以及Module和Decorator的概念。此外,还探讨了如何在实际开发中应用这些新特性。
摘要由CSDN通过智能技术生成

总结:

  1. var let const的区别

  2. 数组新增拓展

  3. 对象新增拓展

  4. 函数新增拓展

  5. Set 和Map

  6. Promise

  7. Generator

  8. Proxy

  9. Module

  10. Decorator

具体介绍:

1.var let const

一、var

1、在ES5中,顶层对象的属性和全局变量是等价的,用var声明的变量既是全局变量,也是顶层变量:

  • 顶层对象,在浏览器环境指的是window对象,在Node指的是global对象

2、使用var声明的变量存在变量提升的情况

3、使用var,我们能够对一个变量进行多次声明,后面声明的变量会覆盖前面的变量声明:

  • 在函数中使用使用var声明变量时候,该变量是局部的
  • 而如果在函数内不使用var,该变量是全局的

二、let

1、letES6新增的命令,用来声明变量

2、用法类似于var,但是所声明的变量,只在let命令所在的代码块内有效,不存在变量提:

  • 只要块级作用域内存在let命令,这个区域就不再受外部影响

3、使用let声明变量前,该变量都不可用,也就是大家常说的暂时性死区:

  • let不允许在相同作用域中重复声明
  • 注意的是相同作用域,下面这种情况是不会报错的,因此,我们不能在函数内部重新声明参数

三、const

1、const声明一个只读的常量,一旦声明,常量的值就不能改变:

  • const一旦声明变量,就必须立即初始化,不能留到以后赋值
  • 如果之前用varlet声明过变量,再用const声明同样会报错

2、const实际上保证的并不是变量的值不得改动,而是变量指向的那个内存地址所保存的数据不得改动:

  • 对于简单类型的数据,值就保存在变量指向的那个内存地址,因此等同于常量
  • 对于复杂类型的数据,变量指向的内存地址,保存的只是一个指向实际数据的指针,const只能保证这个指针是固定的,并不能确保改变量的结构不变

四、区别

1、变量提升:

  • var声明的变量存在变量提升,即变量可以在声明之前调用,值为undefined
  • letconst不存在变量提升,即它们所声明的变量一定要在声明后使用,否则报错

2、暂时性死区:

  • var不存在暂时性死区
  • letconst存在暂时性死区,只有等到声明变量的那一行代码出现,才可以获取和使用该变量

3、块级作用域:

  • var不存在块级作用域
  • letconst存在块级作用域

4、重复声明:

  • var允许重复声明变量
  • letconst在同一作用域不允许重复声明变量

5、修改声明的变量:

  • varlet可以
  • const声明一个只读的常量。一旦声明,常量的值就不能改变

五、使用

  • 能用const的情况尽量使用const,其他情况下大多数使用let,避免使用var

二 数组新增拓展

一、扩展运算符的应用

1、ES6通过扩展元素符...,好比rest参数的逆运算,将一个数组转为用逗号分隔的参数序列:

  • 主要用于函数调用的时候,将一个数组变为参数序列
  • 可以将某些数据结构转为数组,能够更简单实现数组复制,数组的合并也更为简洁

2、扩展运算符可以与解构赋值结合起来,用于生成数组。如果将扩展运算符用于数组赋值,只能放在参数的最后一位,否则会报错:

  • 可以将字符串转为真正的数组

3、定义了遍历器(Iterator)接口的对象,都可以用扩展运算符转为真正的数组。如果对没有 Iterator 接口的对象,使用扩展运算符,将会报错

二、构造函数新增的方法

1、Array.from():将两类对象转为真正的数组:类似数组的对象和可遍历(iterable)的对象(包括ES6新增的数据结构SetMap

  • 可以接受第二个参数,用来对每个元素进行处理,将处理后的值放入返回的数组

2、Array.of():用于将一组值,转换为数组

  • 没有参数的时候,返回一个空数组
  • 当参数只有一个的时候,实际上是指定数组的长度
  • 参数个数不少于 2 个时,Array()才会返回由参数组成的新数组

三、实例对象新增的方法

1、copyWithin():将指定位置的成员复制到其他位置(会覆盖原有成员),然后返回当前数组

  • target(必需):从该位置开始替换数据。如果为负值,表示倒数。
  • start(可选):从该位置开始读取数据,默认为 0。如果为负值,表示从末尾开始计算。
  • end(可选):到该位置前停止读取数据,默认等于数组长度。如果为负值,表示从末尾开始计算。

2、find()、findIndex():find()用于找出第一个符合条件的数组成员

  • 参数是一个回调函数,接受三个参数依次为当前的值、当前的位置和原数组
  • findIndex返回第一个符合条件的数组成员的位置ÿ
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值