简介
let 和 const 是es6新增的命令,这两个命令和 var 一样,都是用来声明变量的。
如果想深入学习 es6 推荐去看 阮一峰的 ECMAScript 6 入门
, 阮一峰-ECMAScript 6 入门
let
let a = 10
console.log(a) // 10
--------------------
console.log(a) // 报错
// let 没有变量提升
let a = 1
-------------------
if(true) {
let a = 1
}
console.log(a) // 报错 a is not defined
// let 有块级作用域
------------------
let a = 0
let a = 10
// console.log(a) // 报错
// let 不允许重复声明
---------------
var a = 10
if(true) {
console.log(a) // 报错
// let 有暂时性死区
let a = 10
}
const
const a = 10;
a = 1
console.log(a) // 报错
// const 是用来定义常量的 定义之后不能重新赋值
// 但是 如果 const 定义的是一个对象,那么可以修改对象下的属性
const a = {a: 10}
a.b = 2
a.a = 1
console.log(a) // {a: 1, b: 2}
---------------
const a = 10
console.log(a) // 10
--------------------
console.log(a) // 报错
// const 没有变量提升
const a = 1
-------------------
if(true) {
const a = 1
}
console.log(a) // 报错 a is not defined
// const 有块级作用域
-----------------
const a = 0
const a = 10
// console.log(a) // 报错
// const 不允许重复声明
------------------
var a = 10
if(true) {
console.log(a) // 报错
// const 有暂时性死区
const a = 10
}
------------
const a
console.log(a) // 报错
// const 声明时,必须赋值
总结
- let 与 const 没有变量提升
- let 与 const 有块级作用域
- let 与 const 不能重复声明
- let 与 const 有暂时性死区
- const 声明时,必须赋值
- const 声明之后,不能再重新赋值,但是如果声明的是对象或数组,那么可以修改对象的属性,也可以通过数组下标去修改数组下的某一项