ES6中let与const的区别

简介: ES6中let与const的区别

1.变量提升
var声明的变量存在变量提升,即将变量提升到当前作用域的顶部,变量可以再声明前调用,值为undefined
let和const不存在该问题,他们声明的变量必须在声明后才能使用
2.暂时性死区
在代码块内,使用let命令声明变量之前,该变量都是不可用的。这在语法上,称为“暂时性死区”(temporal dead zone,简称 TDZ)
let和const存在暂时性死区。即只要块级作用域内存在let命令,它所声明的变量就“绑定”(binding)这个区域,不再受外部的影响

var tmp = 123;
if (true) {
  tmp = 'abc'; // ReferenceError
  let tmp;
}
//以上代码if后面{}形成了块级作用域,由于使用let声明了tmp,则这个变量就绑定了块区域,在声明之前使用,会报错。

3.重复声明变量
var允许重复声明变量。let和const在同一作用域不允许重复声明变量。

var f = 4;
var f = 5;
console.log(5) //5

let g = 6;    
let g = 7;
console.log(7) //SyntaxError: Identifier 'g' has already been declared

const h = 8;
const h = 9;
console.log(h) //SyntaxError: Identifier 'g' has already been declared

4.块级作用域
var不存在块级作用域。let和const存在块级作用域。
ECMAScript 6(简称ES6)中新增了块级作用域。块作用域由 { } 包括,if语句和for语句里面的{ }也属于块作用域。
5.修改已声明的变量
var和let可以。
const声明一个只读的常量。一旦声明,常量的值就不能改变。const声明的变量不得改变值,这意味着,const一旦声明变量,就必须立即初始化,不能留到以后赋值。

const f = 10;
 f= 11;
 console.log(f) //报错 不能进行重复声明

const obj = {
    name: '小明',
    age: 18
}
obj.age = 20
console.log(obj) //{ name: '小明', age: 20 }  
//const声明常量,不允许对变量重新赋值。对于引用类型的值而言,只要在栈内存保存的地址值不变即可。
相关文章
|
2月前
ES6中的var,let,const
ES6中的var,let,const
|
4月前
|
安全 JavaScript 前端开发
ES6 中 let 与 const命令
ES6 中 let 与 const命令
|
2月前
|
JavaScript IDE 开发工具
es6学习笔记(一)let、const
es6学习笔记(一)let、const
|
9月前
|
JavaScript 前端开发 安全
ES6(let和const命令)
ES6(let和const命令)
48 0
|
11月前
|
自然语言处理 JavaScript 前端开发
每天3分钟,重学ES6-ES12(二)var let const的选择
每天3分钟,重学ES6-ES12(二)var let const的选择
65 0
|
JavaScript 前端开发
ES6——let、const
ES6——let、const
91 0
|
JavaScript 前端开发
【ES6】 let与const详解
【ES6】 let与const详解
|
安全
ES6新特性:let和const
ES6新特性:let和const
ES6新特性:let和const
|
JavaScript 前端开发 安全
es6必会之let && const
es6必会之let && const