var、let、const
此为对var、let、const区别的简单总结,参考了阮一峰老师的《ECMAScript入门》
前言
在ES2015之前,JS只有两种类型的作用域:全局作用域和函数(局部)作用域。
在全局作用域声明的变量叫全局变量,可以在JS程序中任何位置访问.
局部变量只能在他们被声明的函数内访问。
块级作用域是ES2015新增,每个{}就代表一个块级作用域,只对let
和const
有用。
var let
let不存在变量提升,即变量必须在声明后才能使用,否则报错。
暂时性死区:只要块级作用域内存在let命令,它所声明的变量就绑定在这个区域,不受外部影响。即在代码块内,使用let
命令声明变量之前,该变量都是不可用的。这在语法上,称为“暂时性死区”
let不允许在重复声明,var可以
const
const声明一个只读常量。一旦声明,常量的值就不能改变(要求一旦声明就必须立即初始化)。使用方法等和let几乎一样。
本质:并不是变量的值不得改动,而是变量指向的那个内存地址所保存的数据不得改动。因此,对于简单类型的数据(数值、字符串、布尔值),值保存在变量指向的那个内存地址,等同于常量。但对于复合类型的数据(数组、对象),保存的只是一个指向实际数据的指针,只会保证这个指针固定,并不能保证其指向的数据结构不变。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。