ES6新特性整理

本文介绍了JavaScriptES6中的关键特性,包括变量声明(let,const)、解构赋值、字符串和数值扩展、函数和数组的增强、运算符拓展、数据结构(Set,Map,Proxy,Reflect)以及异步编程工具(Promise,async/await)。还涵盖了类与继承和模块化的概念。

一、let和const命令

let:在代码块内有效|不能重复声明|不存在变量提升|不影响作用域链

        用于声明变量。用法类似于var,但是声明的变量只在let命令所在的代码块内有效,它声明的变量会绑定这个区域,不受外部的影响。let不允许在相同作用域内重复声明同一个变量。

const:在代码块内有效|不能重复声明|声明之后不允许修改|声明必须赋初试值

        用于声明常量。一旦声明必须初始化,初始化后不能修改,但是如果声明的常量是一个引用数据类型,那么该数据内部的数据是可以修改的,只是不能重新赋值。const、let声明的变量没有变量提升。const声明的变量只在作用域内有效。

暂时性死区

        使用let和const声明的变量需要特别注意,可能会出现暂时性死区,也就是在同一个作用域中使用let、const声明数据前是无法使用的,一旦使用就会报错。

使用var可以重复声明变量,let和const不可以

声明变量的六种方式:

            var、function、let、const、import、class

二、变量的解构赋值

        ES6允许按照一定的模式,从数组和对象中提取值,对变量进行赋值,被称为解构,如var [a,b] = [1,2](按照索引值)

        在解构出来的变量名后面加上:新的名字,可以给变量重新命名。

对象的解构赋值

        对象按照属性名进行赋值,没有顺序

 let { name, age } = { name : ”zs ”,age : 20  };

字符串结构赋值

        字符串也可以解构赋值。这是因为字符串被转换成了一个类似数组的对象。

const [ a , b , c , d , e ] = ’hello ’;

函数参数的解构赋值

functionmove({x,y)= {x:0,y:0 )} {
    return[x,y];
}
move( { x : 3,y:8 } ) ;II[3,8)

解构赋值的用途

        1、交换变量的值

        2、从函数返回多个值

三、字符串的扩展

模板字符串

        ` 我叫 ${ name } `

字符串的新增方法

        includes():返回布尔值,表示是否找到了参数字符串

        startsWith():返回布尔值表示参数字符串是否在源字符串的头部

        endsWith():返回布尔值,表示参数字符串是否在源字符串的尾部

四、数值的拓展

        bigInt大整型 var n = 123n; 声明时在数字后面加n,可以解决精度缺失问题。

        指数运算符  (**) 2 ** 3 就是2的3次方

五、函数的拓展

1、函数参数的默认值

2、rest剩余参数,解决了argument不方便的问题

3、箭头函数:很大程度上解决了this指向的问题。使用“箭头”(=>)定义函数。

六、数组的拓展

1、扩展运算符。(spread)是三个点(...)

2、findIndex方法(返回第一个符合条件的数组成员的位置)、includes方法(返回一个布尔值,表示某个数组是否包含给定的值)、at方法

3、数组的空位:指数组的某个位置没有任何值。

七、对象的拓展

1、属性的简写 {name} 等同于 {name:name}
2、属性名表达式,对象的属性名可以是一个表达式
3、对象的扩展运算符(.  .  .)
4、对象的新增方法

        (1)Object.keys()方法 : 返回一个数组,成员是参数对象自身的(不含继承的)所有可遍历enumerable)属性的键名。

        (2)Object.values()方法 : 返回一个数组,成员是参数对象自身的(不含继承的)所有可遍历enumerable)属性的键值。

        (3)Object.entries()方法 : 返回一个数组,成员是参数对象自身的(不含继承的)所有可遍历(numerable)属性的键值对数组。

八、运算符的拓展

1、可选链,为了避免连续读取属性会报错的问题

2、空值合并,为了排除null和undefined在布尔值判断

九、Symbol数据类型

        一种新的原始数据类型Symbol,表示独一无二的值。。它是JavaScript语言的第7种数据类型,前6种分别是UndefinedNull、布尔值(Boolean)、字符串(String)、数值(Number)和对象(Object)

var a = Symbol(’111’);

十、Set和Map数据结构

set :用来实现去重(只能去基本数据类型),Set本身是一个构造函数,用来生成Set数据结构.

Map:是一种完善的键值对的数据结构,可以当做一种增强版的对象

WeakSet,WeakMap: 是Set和Map的补充。

十一、Proxy代理

        Vue3的响应式原理就是用Proxy,其实就是中间商,用于修改某些操作的默认行为。

十二、Reflect反射

        Reflect 是一个内置对象,它提供了一系列操作对象的方法,这些方法都是静态的(类似 Math 对象)。Reflect 的目的是提供一种在运行时动态地检查和修改对象属性的方式。Reflect 对象不是构造函数,因此你不能通过 new 关键字来创建它的实例。

十三、Promise承诺

本身是一个构造函数,是为了解决异步处理回调地狱而产生的,可以进行链式调用。

Promise的详细介绍和使用可点进本人主页查看往期博客Promise解决异步处理回调地狱-优快云博客

十四、Iterator接口

        Iterator接口是一个内置的接口,它定义了遍历器和生成器对象的行为。Iterator对象用于迭代集合对象,如数组、字符串和其他可迭代对象。Iterator接口也定义了next()方法,该方法返回一个对象。

十五、Generator遍历器/生成器

因为JS是一个异步的语言,所以在执行异步代码的时候 需要等待结果的返回才能执行后面的代码,

Generator可以执行函数的懒执行

十六、async函数

async函数是为了实现异步代码同步化。

它就是Generator函数的语法糖,但是它返回的Promise对象。

async关键字表示后面的函数里有异步代码,await关键字表示要等待后面Promise对象的执行有结果。

 Promise的详细介绍和使用可点进本人主页查看往期博客Promise解决异步处理回调地狱-优快云博客

十七、class基本语法

class声明出来的对象和其他方式不一样,class声明的对象是天生就具备一些特质和行为的。

class  类名 {
    属性名
    构造函数
    方法名
}

十八、class的继承

子类会继承父类的所有的属性和方法。

子类继承父类的时候,如果子类要使用父类的属性和方法,需要在子类的构造函数construtor中使用super()方法,调用后本质上就是执行的父类的构造函数

class 子类名 extends 父类 {

}

十九、Module模块化

Module 语法提供了一种官方的方法来封装和导出代码,能更大利于大型项目的开发和维护,使得不同的 JavaScript 文件可以作为模块被导入和导出。
基本语法:
        在 ES6 中,模块使用 import 和 export 关键字来导入和导出功能。

        如果使用export导出的数据有多个,在引入的时候需要全部直接引用,此时可以使用import * as变量名

总结思维导图:

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值