Java教程

ES6语法

本文主要是介绍ES6语法,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

ES6

  • 1、新增声明命令let和const
  • 2、模板字符串
  • 3、箭头函数
  • 4、剩余参数
  • 5、Object.keys()、Object.assign()
  • 6、for...of 循环
  • 7、import和export
  • 8、Promise对象
  • 9、解构赋值
  • 10、Set数据结构
  • 11、class
  • 12、async、await
  • 13、修饰器
  • 14、Symbol
  • 15、Proxy

简介:ES:全称是 ECMAScript , 它是由 ECMA 国际标准化组织,制定的一项脚本语言的标准化规范。

ES6好处:

  • 变量提升特性增加了程序运行时的不可预测性
  • 语法过于松散,实现相同的功能,不同的人可能会写出不同的代码

1、新增声明命令let和const

  • 声明变量let

      • let关键字就是用来声明变量的
      • 使用let关键字声明的变量具有块级作用域(一对大括号  {  } 产生的作用域)
      • 在一个大括号中 使用let关键字声明的变量才具有块级作用域 var关键字是不具备这个特点的
      • 防止循环变量变成全局变量
      • 使用let关键字声明的变量没有变量提升
      • 使用let关键字声明的变量具有暂时性死区特性
    
  • 声明常量const

    • const声明的变量是一个常量
    • 既然是常量不能重新进行赋值,如果是基本数据类型,不能更改值,如果是复杂数据类型,不能更改地址值
    • 声明 const时候必须要给定值(赋值)
    •  具有块级作用域	
    
  • let const var 区别
    在这里插入图片描述

2、模板字符串

用一对反引号``标识,可以当作普通字符串使用,也可以用来定义多行字符串,也可以在字符串中嵌入变量、js表达式或函数。

3、箭头函数

( 形参 ) => { 函数体 } (匿名函数、简化函数定义语法)

  • 箭头函数中不绑定this,箭头函数中的this指向是它所定义的位置,可以简单理解成,定义箭头函数中的作用域的this指向谁,它就指向谁
  • 箭头函数的优点在于解决了this执行环境所造成的一些问题。比如:解决了匿名函数this指向的问题(匿名函数的执行环境具有全局性),包括setTimeout和setInterval中使用this所造成的问题

注意:

• 函数体中只有一句代码,且代码的执行结果就是返回值,可以省略大括号
        function sum(num1, num2) {
            return num1 + num2;
        }
        //es6写法
        const sum = (num1, num2) => num1 + num2;
• 如果形参只有一个,可以省略小括号
        function fn(v) {
            return v;
        }
        //es6写法
        const fn = v => v;
• 箭头函数不绑定this关键字,箭头函数中的this,指向的是函数定义位置的上下文this    (thia指向window)
• 箭头函数不能使用arguments,但可以使用剩余参数…args
        let arg = (...args) => {
            console.log(args);
        }
        arg(1, 2, 3);//结果为 [1, 2, 3]
• 自调用函数写法(  )(  )
        (function() {
            console.log('自调用函数');
        })();
	等同于
        (() => {
            console.log('箭头函数');
		  })()

4、剩余参数

…args
剩余参数语法允许我们将一个不定数量的参数表示为一个数组,不定参数定义方式,这种方式很方便的去声明不知道参数情况下的一个函数

5、Object.keys()、Object.assign()

  • Object.keys()
    获取对象的所有属性名或方法名,返回一个数组
  • Object.assign()
    assign方法将多个原对象的属性和方法都合并到了目标对象上,可以接收多个参数,第一个参数是目标对象,后面都是源对象

6、for…of 循环

var arr=["a","b","c"]
for(var v of arr){
	console.log(v)
	}//a b c

7、import和export

ES6模块化规范(浏览器端和服务器端通用)
①. 每个js文件都是一个独立的模块
②. 暴露:export关键字
③. 导入:import关键字
(package.json文件中加上: “type”: “module”)

8、Promise对象

promise:处理异步程序,主要解决异步深层嵌套问题

回调地狱(横向金字塔):大量使用回调函数进行异步操作,但异步操作什么时候返回结果是不可控的,所以我们希望几个异步请求按照顺序来执行,就将异步操作嵌套起来,嵌套的层数特别多,即回调地狱。
回调地狱解决方案:
①. promise
②. async/await
③. generator
事件发布/监听模式

三种状态:
①最初状态:pending 等待中,此时promise的结果为undefined
②当resolve(value)调用时,达到最终状态之一:fulfilled,(成功的)完成,此时可以获取结果value
③当reject(error)调用时,达到最终状态之一:reject,失败,此时可以获取错误信息error

9、解构赋值

解构赋值:从数组和对象中提取值,对变量进行赋值

• 解构赋值就是把数据结构分解,然后给变量进行赋值
• 如果解构不成功,变量跟数值个数不匹配的时候,变量的值为undefined
• 数组解构用中括号包裹,多个变量用逗号隔开:let  [ 变量,变量];
• 对象解构用花括号包裹,多个变量用隔开: let {属性:变量,属性:变量…… }。属性名和变量名一样时,变量名可以省略不写,只写属性名。
作用:让我们方便的去取对象中的属性跟方法,减少代码量

10、Set数据结构

Set数据结构:类似于数组,但是成员的值都是唯一的,没有重复的值

实例方法:
• add(value):添加某个值,返回 Set 结构本身
• delete(value):删除某个值,返回一个布尔值,表示删除是否成功
• has(value):返回一个布尔值,表示该值是否为 Set 的成员
• clear():清除所有成员,没有返回值
• size():数据的长度

应用:数组去重

11、class

class类的继承

12、async、await

使用async、await,搭配promise,可以通过编写形似同步的代码来处理异步流程,提高代码的简洁性和可读性
async用于声明一个function是异步的
await用于等待一个异步方法执行完成

13、修饰器

@decorator是一个函数,用来修改类甚至于是方法的行为
修饰器本质就是编译时执行的函数

14、Symbol

symbol是一种基本类型,通过调用symbol函数产生,接收一个可选的名字参数,该函数返回的symbol是唯一的

15、Proxy

使用代理监听对象的操作

这篇关于ES6语法的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!