ES6 基础
let、const、var 的区别
- 是否存在变量提升?
var声明的变量存在变量提升(将变量提升到当前作用域的顶部)。即变量可以在声明之前调用,值为undefinedlet和const不存在变量提升。即它们所声明的变量一定要在声明后使用,否则报ReferenceError错
- 是否存在暂时性死区?
let和const存在暂时性死区。即只要块级作用域内存在 let 命令,它所声明的变量就“绑定”(binding)这个区域,不再受外部的影响 - 是否允许重复声明变量?
var允许重复声明变量。let和const在同一作用域不允许重复声明变量。
- 是否存在块级作用域?
- var 不存在块级作用域。
- let 和 const 存在块级作用域
- 块作用域由
{ }包括,if语句和for语句里面的{ }也属于块作用域
- 块作用域由
- 是否能修改声明的变量?
var和let可以。const声明一个只读的常量。一旦声明,常量的值就不能改变。const声明的变量不得改变值,这意味着,const一旦声明变量,就必须立即初始化,不能留到以后赋值。
箭头函数与普通函数区别
- 箭头函数是匿名函数,不能作为构造函数,不能使用 new
- 箭头函数内没有
arguments,可以用展开运算符...解决 - 箭头函数的 this,始终指向父级上下文(箭头函数的
this取决于定义位置父级的上下文,跟使用位置没关系,普通函数this指向调用的那个对象) - 箭头函数不能通过
call() 、 apply() 、bind()方法直接修改它的 this 指向。(call、apply、bind会默认忽略第一个参数,但是可以正常传参) - 箭头函数没有原型属性