请注意,本文编写于 634 天前,最后修改于 612 天前,其中某些信息可能已经过时。
目录
const关键字
说明
<font style="color:red">注意</font>
const的本质
let关键字
说明
Eg
特点
暂时性死区
说明
Eg
var关键字
补充
var、let、const区别
const关键字
说明
用于声明一个或多个常量,声明时必须进行初始化,且初始化后值不可再修改
注意
- const声明的常量必须一开始初始化,不能留到后续赋值
- 不存在‘变量’声明提升
- 只在声明所在的块级作用域内有效
- 不能和它所在作用域内的其他变量或函数拥有相同的名称
- const 定义常量的值不能通过再赋值修改,也不能再次声明
const的本质
const定义并非指变量的值不发生改动,而是变量指向的内存地址不会发生改动。对于简单的数据类型(数值、字符串、布尔值),值就是存在内存地址中;对于复合类型(对象、数组)变量指向的内存地址保存的只是一个指针,const只能保证这个指针是固定的,不能控制指针指向的数据结构是否可变
let关键字
说明
ES6新增了let命令,用于声明变量。其用法类似于 var ,但是所声明的变量只在 let命令所在的代码块内有效
Eg
如下图,在块级作用域中使用let声明变量后,无法在外部访问
特点
- 不存在变量提升[必须声明后使用,否则报错]
- 块级作用域
- 不能和它所在作用域内的其他变量或函数拥有相同的名称
- let声明的变量不用初始化
- let声明的变量可以重新赋值
- 在 HTML 中, 全局作用域是针对 window 对象。使用let关键字声明的全局作用域变量不属于 window 对象
- let 关键字在不同作用域,或不同块级作用域中是可以重新声明赋值的
- let定义的变量,只能在块作用域里访问,不能跨块访问,也不能跨函数访问
- let 关键字声明的变量需要先声明再使用
暂时性死区
说明
ES6明确规定,如果区块中明确存在 let和const命令,则这个区块对这些命令声明的变量从一开始就形成封闭作用域,只要在声明之前使用这些变量,就会报错
Eg
var关键字
- 使用 var关键字声明的变量不具备块级作用域的特性,它在{}外依然能被访问到
- 在 HTML 中, 全局作用域是针对 window 对象。使用var关键字声明的全局作用域变量属于 window 对象
补充
在函数中,var和let声明的变量都是局部变量,函数外都是全局变量
var、let、const区别
- var定义的变量,没有块的概念,可以跨块访问, 不能跨函数访问。
- let定义的变量,只能在块作用域里访问,不能跨块访问,也不能跨函数访问。
- const用来定义常量,使用时必须初始化(即必须赋值),只能在块作用域里访问,而且不能修改。
- 同一个变量只能使用一种方式声明,不然会报错
本文作者:RKLS
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA
许可协议。转载请注明出处!