ECMAScript6.0(简称ES6)在 2015 年 6 月 正式发布。ECMA :欧洲计算机制造商协会 European Computer Manufacturers Association。
ECMASCRIPT:是制定JavaScript的一种标准。到目前为止,各大浏览器基本都实现了ES6标准,对于不支持ES6的老浏览器,可以使用 babel 将ES6代码转换为ES5代码。
ES6的特性:
一、块级作用域声明方式 let 和 常量声明方式 const
let:
1、使用 let 来定义的变量,作用域仅限于当前的代码块,而不是当前的函数。
2、let 不存在变量提升。
而 var 是会存在变量提升的(就是变量可以在声明之前使用,值为 undefined)。
let 声明的变量在声明之前使用时会报错。
3、 暂时性死区。
在代码块内,使用 let 声明变量之前,该变量是不可用的,这在语法上,称为“ 暂时性死区 " (简称 TDZ)。
4、 let 不允许在相同作用域内,重复声明同一个变量。
作用域嵌套时,内层作用域可以声明定义外层作用域的同名变量。
const:
1、const 声明一个只读的常量。一旦声明,常量的值就不能改变,这意味着 const 声明的变量一旦声明就必须立即初始化。
2、const 声明的变量同样也存在暂时性死区,且 只在声明的块级作用域中有效,不可重复声明。
3、const 声明本质是保证变量指向的那个内存地址所保存的数据不得改动。
所以,使用 const 声明数组和对象时,变量随不能被再次赋值,但是数组和对象是可以进行增删改等操作的。
二、对象和数组的解构赋值
1、数组结构赋值:可以使用 [] 对数组进行解构
let [ a, b, c ] = [ 1, 2, 3 ] // a = 1, b = 2, c = 3
2、对象结构赋值:let obj = { name: "zhangsan", age: 18 }
可以使用 {} 对对象进行解构,将对象中的属性拆分到多个变量中。
let { name, age } = obj // name = "zhangsan" , age = 18
三、ES6的对象字面量语法
let name = "张三"; let age = 18;
let person = {
name,
age,
run(speed){ console.log(name + " 正在 " + speed + ” 的速度奔跑。“) }
}
四、ES6中可以使用关键字 class 来声明一个类。格式为:class + 类名
class Animal {
constructor({ name,sex}){ // 构造函数
this.name = name;
this.sex = sex;
}
bark(){ console.log("这是个方法") }
}
五、ES6字符串模板,字符串模板中可以使用 ${} 的形式嵌入变量,并且可以在里面换行。
let name = "小明"; let age = 18;
let str = ` 我叫 ${name} ,今年 ${age} 岁了`
六、ES6中的箭头函数,ES6中的箭头函数的格式 :
(参数列表) => { 函数体 } ,当参数只有一个时,() 可以省略。
箭头函数和普通函数除了写法上不同外,函数中的 this 指向也不一样。
........ 持续更新中