Skip to content

ES6 基础

let、const、var 的区别

  1. 是否存在变量提升?
  • var声明的变量存在变量提升(将变量提升到当前作用域的顶部)。即变量可以在声明之前调用,值为undefined
  • letconst不存在变量提升。即它们所声明的变量一定要在声明后使用,否则报ReferenceError
  1. 是否存在暂时性死区? let和const存在暂时性死区。即只要块级作用域内存在 let 命令,它所声明的变量就“绑定”(binding)这个区域,不再受外部的影响
  2. 是否允许重复声明变量?
  • var允许重复声明变量。
  • letconst在同一作用域不允许重复声明变量。
  1. 是否存在块级作用域?
  • var 不存在块级作用域。
  • let 和 const 存在块级作用域
    • 块作用域由{ }包括,if语句和for语句里面的{ }也属于块作用域
  1. 是否能修改声明的变量?
  • varlet可以。
  • const声明一个只读的常量。一旦声明,常量的值就不能改变。const声明的变量不得改变值,这意味着,const一旦声明变量,就必须立即初始化,不能留到以后赋值。

箭头函数与普通函数区别

  • 箭头函数是匿名函数,不能作为构造函数,不能使用 new
  • 箭头函数内没有arguments,可以用展开运算符...解决
  • 箭头函数的 this,始终指向父级上下文(箭头函数的this取决于定义位置父级的上下文,跟使用位置没关系,普通函数this指向调用的那个对象)
  • 箭头函数不能通过call() 、 apply() 、bind()方法直接修改它的 this 指向。(call、apply、bind会默认忽略第一个参数,但是可以正常传参)
  • 箭头函数没有原型属性

如有转载或 CV 的请标注本站原文地址