var、let、const 之间的区别和联系

443 阅读1分钟

let、const都是ES6中新增加的特性,都表示块级作用域,即它们只在最近的代码块中生效;

let:

  • let 声明一个局部变量
  • 不存在变量提升,即使用的时候必须先声明
  • 同一个代码块中不能重复声明

const:

  • const声明一个局部常量
  • 声明的时候必须要赋值,赋值之后一般不可修改内存地址,但是可以修改属性成员。(即const声明一个对象时,对象里面的属性可以修改)
  • 一般使用大写命名
const NUM = 1;
NUM = 0;//报错

//但是如果声明的是一个对象
const OBJ_STUDENT = {name:'aaa'};
OBJ_STUDENT.name = 'bbb';//不报错
OBJ_STUDENT = {name:'ccc'};//报错

var:

  • var 声明的是一个全局的变量,在var所在的函数内生效
  • 存在变量提升,即在未声明的时候使用这个变量会打印undefined
console.log(x);//undefined
var x = '全局变量';

//但是let会报错
console.log(x);//ReferenceError: x is not defined
let x = '全局变量';