前端必会------ES6新特性

1.let const声明变量与常量

let 声明变量,const声明常量,皆为块级作用域,无法变量提升;须先声明再调用,语法上称为暂时性死区;同代码块内不能重复声明;const为只读常量,声明即赋值,如果const声明的是一个对象,则其属性值可变,地址不可变。

2.模板字符串(``反引号)

作为普通字符串使用,可定义多行,可嵌入变量,js表达式,函数,引用方法(${})

3.箭头函数

函数名=()=>{}

只有一个形参时()可省略,其this始终指向其定义时离this最近的一个函数,如果没有就指向window

4.对象的扩展

(1)简写

 属性的简写:当属性值为变量值时 如:let obj = {name}; 等同于= > let obj = {name:name};

 方法的简写:methods(){};  等同于=>methods:function(){};

(2)Object.keys()方法

用法:获取对象的所有属性或方法名(不包括原型的内容),返回一个数组。

 let obj = {
   name:'john',
   age:20,
   getName:function(){
    alert(this.name)
   }
  }
console.log(Obj.keys(obj));//返回键名数组
//打印结果:[name,age,getName]
console.log(Obj.keys(obj).length);//返回对象长度
//打印结果:3


//获取以数组形式的下标
console.log(Obj.keys(["aa","bb","cc"])); //["0","1","2"]
console.log(Obj.keys(["abcdefg"])); //["0","1","2","3","4","5","6"]

 (3)Object.assign()方法

用法:将多个原对象的属性和方法都合并到目标对象上,可以接收多个参数,第一个参数是目标对象,后面的都是源对象。

let target = {}//目标对象

//源对象1
let source1 = {
   name:'ming',
   age:'19'
}

//源对象2
let source2 = {
   sex:'女'
}

//源对象3 与源对象2中的对象有同名属性sex
let source3 = {
   sex:'男'
}

Object.assign(target,source1,source2,source3)

console.log(target)
//打印结果:{name:'ming',age:'19',sex:'男'}
//当出现同名属性时,合并时默认用后一个属性值

5.for...of循环

let arr = ["小林","小佳","小丽"]

for (let v of arr){
console.log(v);//小林   小佳   小丽
}

拓展:for...of与for...in的区别

for...in:遍历数组下标(键)

for...of:遍历数组的值(值)

6.import和export

在ES6标准中,js原生支持模块(module),将js代码分割成不同功能的小块进行模块化,将不同的功能代码分别写在不同的文件中,各个模块只需要导出公共接口部分,然后通过模块的导入的方式在其他地方使用。

export:用于对外输出本模块,一个文件可以理解为一个模块。

import:变量接口import用于在一个模块中加载拎一个含有export接口的模块。

*注意:import和export命令只能在模块顶部,不能在代码块之中

7.Promise对象 

Promise是异步编程的一种解决方案,将异步操作以同步操作的流程表达出来,避免了层层嵌套的回调函数,主要是为了解决异步处理回调地狱而产生的Promise构造函数包含一个参数和一个带有resolve(解析)和reject(拒绝)两个参数的回调。

在回调中执行一些操作(例如异步),如果一切都正常,则调用resolve,否则调用reject。对已经实例化过的Promise对象可以调用Promise.then()方法,传递resolve和reject方法作为回调。

8.对象的解构赋值

(1)数组的解构赋值

解构赋值是对赋值运算符的扩展

let [a,b,c] = [1,2,3]
//a = 1   b = 2   c = 3

 (2)对象的解构赋值

与数组解构赋值类似,但数组成员是有序的,对象的属性则是无序的,所以对象的解构赋值简单理解就是等号左边和右边的结构相同

let {foo,bar} = {
   foo:'aaa',
   bar:'bbb'
 }
//foo = 'aaa',bar = 'bbb'

let {baz:foo} = {
   baz:'ddd'  
}
//foo = 'ddd'

9.Set数据结构

其类似数组,所有的数据都是唯一的,没有重复的值。它本身是一个构造函数。

属性和方法:

Size()数组的长度

Add()添加某个值,返回Set结构本身

Delete()删除某个值,便是删除知否成功

Has()查找某条数据,返回一个布尔值

Clear()清除所有成员,没有返回值

*主要应用场景:数组去重

  • 5
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ES6-ES12是JavaScript的不同版本,每个版本都引入了新的特性和改进。以下是一些ES6到ES12的新特性的示例: ES6(2015年): 1. 箭头函数:简化了函数的语法。 2. 模板字面量:使用反引号(`)来创建多行字符串和插入变量。 3. 解构赋值:从对象或数组中提取值并赋给变量。 4. let和const:引入块级作用域的变量声明方式。 5. Promise:处理异步操作的更强大的方式。 ES7(2016年): 1. Array.prototype.includes():判断数组是否包含某个元素。 2. 指数操作符:使用双星号(**)进行指数运算。 ES8(2017年): 1. async/await:更简洁地处理异步操作。 2. Object.values()和Object.entries():从对象中提取值或键值对。 ES9(2018年): 1. Rest/Spread属性:通过...语法来处理函数参数和对象字面量。 2. Promise.prototype.finally():在Promise结束时执行操作。 ES10(2019年): 1. Array.prototype.flat()和Array.prototype.flatMap():用于处理嵌套数组的方法。 2. Object.fromEntries():将键值对列表转换为对象。 ES11(2020年): 1. 可选链操作符(Optional chaining):简化了访问深层嵌套属性的方式。 2. Nullish coalescing操作符:提供了一种默认值的设定方式。 ES12(2021年): 1. Promise.any():在多个Promise中返回最快解决的结果。 2. Logical Assignment Operators:提供了逻辑运算符与赋值的结合方式。 当然,以上仅是一些主要的新特性ES6-ES12还有其他许多有用的功能和语法改进。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值