ES6

90 阅读1分钟

let、const和var的区别

1.重复声明 var允许重复声明,let、const不允许;

2.变量提升 var 会提升变量的声明到当前作用域的顶部,let、const不存在变量提升;

3.暂时性死区 只要作用域内存在let、const,它们所声明的变量或常量就自动“绑定”这个区域,不再受到外部作用域的影响;

4.window对象的属性和方法 全局作用域中,var声明的变量,通过function声明的函数,会自动变成window对象的属性或方法。let、const不会; // var/function var age = 18; function add() {}; console.log(window.age); console.log(window.add === add);

5.块级作用域 var 没有块级作用域。let、const有块级作用域; 作用域链:内层作用域->外层作用域->...->全局作用域;

模板字符串

let angel = nu啦啦♪(^∇^*)${angelMogui};

箭头函数

  1. 非箭头函数(一般函数)的this指向调用该函数(自己)的对象;

  2. 箭头函数没有自己的this指向,需要通过作用域链(由内向外)查找;

  3. 不适用箭头函数的场景:①构造函数(因为构造函数的this指向自己的实例,而箭头函数没有this指向); ②需要this指向调用对象的时候; ③需要使用arguments的时候;【箭头函数中没有arguments】【可以用剩余参数】

解构赋值

定义:解析某一数据的结构,将想要的东西提取出来,赋值给变量或常量;

数组的解构赋值: 例如const [a, [,,b], c] = [1, [2,3,4], 5]

数组解构赋值的默认值:例如const [a=1, b=2] = [3]; 【注意:只有当一个数组成员严格等于(===)undefined时,对应的默认值才会生效】