博客
关于我
ES6知识点
阅读量:367 次
发布时间:2019-03-04

本文共 2296 字,大约阅读时间需要 7 分钟。

ES6概述

1. ECMAScript、JavaScript、Node.js的区别

ECMAScript(简称ES)是一种语言标准,涵盖了变量、数组、循环、判断等基础功能。JavaScript是基于ECMAScript开发的语言,结合了Web API,用于浏览器端的脚本。Node.js则是基于ECMAScript扩展的,结合了Node.js API,用于服务器端开发。无论是JavaScript还是Node.js,它们都是ECMAScript的超集(super set)。


2. ECMAScript的关键版本

ECMAScript的版本发展如下:

  • ES3.0:1999年
  • ES5.0:2009年
  • ES6.0:2015年,版本号不再使用数字编号,而是采用年份
  • ES7.0:2016年

3. 为什么ES6如此重要?

ES6通过解决JavaScript在语言层面上的问题,使其能够支持开发大型应用。它引入了块级作用域、常量声明、箭头函数等功能,提升了代码的可读性和可维护性。


ES6块级绑定

1. var声明的问题

  • 允许重复声明,导致数据覆盖
  • 变量提升导致怪异的数据访问和闭包问题
  • 全局变量挂载到全局对象,引发污染

2. let声明

ES6引入了let关键字,支持块级作用域。let声明的变量不会挂载到全局对象,且不允许重复声明。其变量提升机制虽然存在,但不会导致闭包问题,适合在循环中使用。

3. const声明

const声明的变量必须在声明时赋值,且不可重新赋值。尽量使用const以确保变量不变,提升代码的安全性和一致性。


ES6字符串和正则表达式

1. Unicode支持

ES6通过codePointAt方法支持Unicode码点匹配,正则表达式中新增了u标志。

2. 更多字符串API

新增了includesstartsWithendsWithrepeat等方法,提升字符串操作的便利性。


ES6函数

1. 参数默认值

ES6允许在函数参数中设置默认值,使用=符号赋值,解决了传统的undefined问题。

2. 剩余参数

ES6引入了...展开运算符,用于将函数调用中的多余参数收集为数组。

3. 函数用途明确

ES6新增了new.target属性,判断函数是否通过new调用,提升函数的用途明确性。

4. 箭头函数

箭头函数简化了this指向问题,适用于匿名函数或临时使用的场景。箭头函数支持简写形式,提升代码简洁性。


ES6对象

1. 对象字面量

ES6支持对象字面量的成员速写、方法速写和计算属性名。

2. Object新增API

  • Object.is:判断数据是否相等,区分NaN+0/-0
  • Object.assign:混合对象属性,支持深度克隆。
  • Object.getOwnPropertyNames:按顺序枚举对象属性。
  • Object.setPrototypeOf:设置对象的隐式原型。

ES6类

1. 类的特点

  • 类声明不会被提升,存在暂时性死区。
  • 类内部必须使用严格模式。
  • 类方法不可枚举,且无法作为构造函数使用。

2. 类继承

使用extends关键字继承父类,super调用父类构造函数或原型方法。


ES6解构

1. 对象解构

支持成员速写、默认值和计算属性名。

2. 数组解构

支持展开运算符和剩余项,实现数组操作。

3. 参数解构

直接解构函数参数,提升代码简洁性。


ES6符号

  • 符号无法字面量,通过Symbol()创建。
  • 每个符号唯一且不可变。
  • 符号属性不可枚举,可通过Object.getOwnPropertySymbols获取。

ES6异步处理(Promise)

1. Promise基本使用

  • new Promise创建Promise对象,thencatch处理状态变化。
  • finally处理完成后逻辑。

2. Promise串联

通过thencatch链式调用,确保依赖关系。

3. async和await

简化Promise使用,提升代码可读性。


ES6 Fetch API

1. 概述

Fetch API是一个基于Promise的XMLHttpRequest替代方案,提供更简洁的网络请求方式。

2. 基本使用

  • 使用fetch方法发送请求,返回Promise对象。
  • 配置请求头、体和缓存策略。

3. 文件上传

通过FormData构造请求体,使用fetch发送文件。


ES6迭代器和生成器

1. 迭代器

  • 迭代器通过next方法提供数据。
  • 可通过for-of循环遍历。

2. 生成器

  • 生成器通过yield关键字产生数据。
  • 适用于异步任务控制,提升代码可读性。

ES6集合(Set和Map)

1. Set

  • 存储唯一数据,支持批量操作。
  • 与数组互相转换,适合集合操作。

2. Map

  • 存储键值对,键不可重复。
  • 支持遍历和批量操作。

ES6代理与反射

1. 属性描述符

  • 通过Object.getOwnPropertyDescriptor获取属性描述符。
  • 使用Object.defineProperties批量设置描述符。

2. 存取器属性

  • 通过getset配置存取器属性,控制属性读写。

3. Reflect反射

  • 提供底层功能的API,简化操作。
  • 包括属性操作、函数调用等。

ES6增强数组

1. 新增API

  • Array.ofArray.from创建数组。
  • findfindIndex查找元素。
  • fillcopyWithin操作数组。

通过这些优化,ES6极大提升了JavaScript的功能和代码质量,为开发者提供了更强大的工具。

转载地址:http://tfyg.baihongyu.com/

你可能感兴趣的文章
Mysql 重置自增列的开始序号
查看>>
mysql 锁机制 mvcc_Mysql性能优化-事务、锁和MVCC
查看>>
MySQL 错误
查看>>
mysql 随机数 rand使用
查看>>
MySQL 面试题汇总
查看>>
MySQL 面试,必须掌握的 8 大核心点
查看>>
MySQL 高可用性之keepalived+mysql双主
查看>>
MySQL 高性能优化规范建议
查看>>
mysql 默认事务隔离级别下锁分析
查看>>
Mysql--逻辑架构
查看>>
MySql-2019-4-21-复习
查看>>
mysql-5.6.17-win32免安装版配置
查看>>
mysql-5.7.18安装
查看>>
MySQL-Buffer的应用
查看>>
mysql-cluster 安装篇(1)---简介
查看>>
mysql-connector-java.jar乱码,最新版mysql-connector-java-8.0.15.jar,如何愉快的进行JDBC操作...
查看>>
mysql-connector-java各种版本下载地址
查看>>
mysql-EXPLAIN
查看>>
MySQL-Explain的详解
查看>>
mysql-group_concat
查看>>