let和const命令_2020/01/29

let

ES6新增了let命令,用来声明变量。它的用法类似与var,但是所声明的变量,只在let命令所在的代码块内有效。

let块级你作用域

特点:

1.不存在变量提升;

2.暂时性死区,只要在块级作用域内存在let命令,它所声明的变量就“绑定”(binding)这个区域,不再受外部影响;

let暂时性死区

ES6明确规定,如果在区块中存在let和const命令,这个区块对这些命令声明的变量,从一开始就形成了封闭的作用域,所以在let声明变量前,就会报错。

ES6规定暂时性死区和let、const语句不出现变量提升,主要是为了减少运行时的错误,防止在变量声明前就使用这个变量,从而导致预料之外的行为。这样的错误在ES5是很常见的,现在又来这种规定,避免此类错误就很容易了。

3.不允许重复声明,let不允许在同一作用域内,重复声明同一个变量;

块级作用域

ES6规定块级作用域必须有大括号,如果没有大括号,JavaScript引擎就认为不存在块级作用域。

const

const声明了一个只读的常量。一旦声明,常量的值就不能改变。

const的作用域与let命令相同:只在声明所在的块级作用域内有效。

特点:

1.不存在变量提升;

2.暂时性死区,只能在声明的位置后面使用;

本质:const实际上保证的,并不是变量的值不得改动,而是变量指向的那个内存地址所保存的数据不得改动。对于简单数据类型(数值、字符串、布尔值),值就保存在变量所指向的那个内存地址,因此等同于常量。但是对于复杂数据类型,变量指向的内存地址,保存的只是一个指向实际数据的指针,const只能保证这个指针是固定的(即总是指向一个固定的地址),至于它指向的数据结构是不是可变的,就完全不能控制了。

ES6声明变量的六种方法

var、function、let、const、import、class。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容