var、let、const

此为对var、let、const区别的简单总结,参考了阮一峰老师的《ECMAScript入门》

前言

在ES2015之前,JS只有两种类型的作用域:全局作用域和函数(局部)作用域。

在全局作用域声明的变量叫全局变量,可以在JS程序中任何位置访问.

局部变量只能在他们被声明的函数内访问。

块级作用域是ES2015新增,每个{}就代表一个块级作用域,只对letconst有用。

var let

let不存在变量提升,即变量必须在声明后才能使用,否则报错。

暂时性死区:只要块级作用域内存在let命令,它所声明的变量就绑定在这个区域,不受外部影响。即在代码块内,使用let命令声明变量之前,该变量都是不可用的。这在语法上,称为“暂时性死区”

let不允许在重复声明,var可以

const

const声明一个只读常量。一旦声明,常量的值就不能改变(要求一旦声明就必须立即初始化)。使用方法等和let几乎一样。

本质:并不是变量的值不得改动,而是变量指向的那个内存地址所保存的数据不得改动。因此,对于简单类型的数据(数值、字符串、布尔值),值保存在变量指向的那个内存地址,等同于常量。但对于复合类型的数据(数组、对象),保存的只是一个指向实际数据的指针,只会保证这个指针固定,并不能保证其指向的数据结构不变。


HeXuan
9 声望1 粉丝

引用和评论

0 条评论