ECMAScript介绍

  1. ECMA:欧洲计算机制造商协会(European Computer Manufacturers Association)。
  2. ECMAScript:由ECMA国标制定的脚本程序设计语言

ES6新特性

  1. let关键字:变量声明使用let关键字,弃用var关键字
//let a = 100
// 1. let关键字声明的变量不允许重复声明
//let a = 300 // Identifier 'a' has already been declared

// 2. let声明的变量a存在块级作用域
for (let a = 0; a <= 3; a++) {
    
}
console.log(a) // a is not defined
  1. const关键字:声明同时定义常量
const PI = 3
// 1. 常量的值不允许被修改
PI = 3.14 // Assignment to constant variable.

// const关键字类似于C语言中的指针常量,不允许修改const关键字修饰的变量的值
// 所以一般声明对象类型使用 const,非对象类型声明选择 let
// 对象类型包括字符串和数组

const obj = {
    name : '张三',
    age : 23
}
// 对象的地址值不可以变化,但是对象中的属性内容可以
obj.age = 33
obj = {} // error:Assignment to constant variable
  1. 解构赋值
// 1.数组的解构赋值
const arr = [1,2,3]
let [a,b,c] = arr
// 2.对象的解构赋值
const obj = {
    name: '张三',
    age: 23
}
let {name,age} = obj
  1. 模板字符串:使用反引号标识
// 1. 模板字符串中可以出现换行
const str = `Hello,
World`
// 2.模板字符串可以和变量进行拼接
let name = '张三'
const string = `Hi,${name}`
  1. 对象的写法可以简写
// 对象中的属性和方法可以简写
let name = '张三'
function func() {

}
const obj = {
    // 等价于name: name
    name,
    // 等价于func: func
    func,
}
  1. 箭头函数:注意this指针的指向问题
  2. rest参数:用在函数形参上,用于获取函数的实参,代替arguments
// rest参数适用于函数参数不定的函数
function func(...args) {
    console.log(args)
}
func(1,2,3,'test')
  1. spread扩展运算符用于函数实参上面,也是三个点。可以将一个数组转为用逗号分隔的参数序列,对数组进行解包。
const obj = [1, 2, 3]
function func() {
    console.log(arguments)
}
func(...obj)
  1. Symbol:ES6引入一种类似于字符串的新的原始数据类型
  2. 迭代器Iterator:ES6提供新的遍历方式,使用for...of循环。具备Iterator接口的类就可以使用这种遍历方式
  3. 生成器:生成器函数是ES6提供的一种异步编程解决方案
  4. Promise:Promise是ES6引入的异步编程的新解决方案。语法上 Promise是一个构造函数,用来封装异步操作并可以获取其成功或失败的结果。
  5. Set:ES6提供的一种新的数据结构,可以去重
  6. Map:ES6提供的一种新的数据结构,键值对的集合
  7. 引入类的概念,可以通过关键字class定义类
  8. ES6的模块化
    1. import关键字
    2. export关键字