1.与var不同,let声明变量时不能重名
let声明具有块级作用域,变量只在声明的的代码块中有效,出了代码块就无效了
let不存在变量提升,没定义先引用的话会出错
不影响作用域链,可从函数内部往外找, 上级代码块中的局部变量下级可用
使用var声明变量会报错,因为 i 最后会变成items.length, 改成let没有问题
2.const常量一定要赋初始值, 一般使用大写
3.模板字符串中可以换行, 还可以使用${ }实现字符串拼接
4.对象属性和方法的简化写法
5.箭头函数
this是静态的,在函数声明时即被确定无法改变,使用call函数改变this指向不起作用
不能作为构造函数实例化对象
不能使用arguments变量
6.箭头函数适合与this无关的回调,定时器,数组方法的回调
此时的this指向ad, 而不是window
7.箭头函数的this是如何查找的:向外层作用域中,一层层查找this
结果分别是window, window, window, obj
8.ES6允许给函数参数赋初始值
rest参数用于获取函数的实参, 代替arguments, 得到的是一个数组
9.扩展运算符能将数组转化为逗号分隔的参数序列
10.Set类似于数组,但成员的值都是唯一的
11.Map类似于对象,也是键值对的集合,但是键的范围不限于字符串
12.static标注的属性和方法属于class类,不属于实例对象
没有添加static的属性和方法会被自动添加到原型中,就可以被实例对象引用
13.Promise将网络请求的代码和异步处理的代码做了一个分离