title: let和const声明的区别
date: 2018-10-20 18:32:15
tags: [JavaScript]
categories: JavaScript
let 命令
- let所声明的变量只在其所在的代码块内有效,比如for循环的计数器就很适合使用let命令。
- 不存在变量提升
- 暂时性死区:使用let命令声明变量完成之前,该变量都是不可用的。
- 在相同作用域中不允许重复声明同一个变量
const 命令
let与const都是只在声明所在的块级作用域内有效。
- 声明一个只读常量,一旦声明,常量的值就不能改变。
- 实际上const保证的并不是变量的值不得改动,而是变量指向的那个内存地址不得改动。
- 对于简单类型的数据,值就保存在变量指向的那个内存地址。
- 而对于复合类型的数据,变量指向的内存地址,保存的只是一个指针,const保证这个指针固定,而它指向的数据结构是不能控制的。
举例:
const a; // 报错,一旦声明变量就应该立即赋值
const b = 2;
b = 3 // 报错,声明后不能重新赋值
const array1 = [];
array1 = [1,2,3] // 报错,数组是复合类型,指向的地址不能发生改变,应始终指向[]所在的地址,而[1,2,3]与[]不是同一个地址
const array2 = [];
array2[0] = 1
array2[1] = 2
array2[2] = 3 // 不报错,array2指向的地址不变,改变的只是其内部数据
网友评论