js常用vat,let,const区别你了解吗

320 阅读1分钟

是否存在变量提升?

var声明的变量存在变量提升(将变量提升到当前作用域的顶部)。即变量可以在声明之前调用,值为undefined。 let和const不存在变量提升。即它们所声明的变量一定要在声明后使用,否则报ReferenceError错。

是否存在暂时性死区?

let和const存在暂时性死区

console.log(code) // ReferenceError
let code = 'code'

区别

  1. var 是ES5提出,let与const是ES6提出

  2. let和var声明的是变量,声明之后可以更改,const声明引用类型可以更改

  3. var声明的变量存在变量提升(将变量提升到当前作用域的顶部)。即变量可以在声明之前调用,值为undefined。let和const不存在变量提升。即它们所声明的变量一定要在声明后使用,否则报ReferenceError错。

  4. var不存在块级作用域。let和const存在块级作用域。ES5中作用域有:全局作用域、函数作用域。没有块作用域的概念。ES6(简称ES6)中新增了块级作用域。块作用域由 { } 包括,if语句和for语句里面的{ }也属于块作用域。