编辑
2023-03-21
JavaScript
0
请注意,本文编写于 577 天前,最后修改于 555 天前,其中某些信息可能已经过时。

目录

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声明的变量不用初始化
  • let声明的变量可以重新赋值
  • 在 HTML 中, 全局作用域是针对 window 对象。使用let关键字声明的全局作用域变量不属于 window 对象
  • let 关键字在不同作用域,或不同块级作用域中是可以重新声明赋值的
  • let定义的变量,只能在块作用域里访问,不能跨块访问,也不能跨函数访问
  • let 关键字声明的变量需要先声明再使用

暂时性死区

说明

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

Eg

TDZ

var关键字

  • 使用 var关键字声明的变量不具备块级作用域的特性,它在{}外依然能被访问到
  • 在 HTML 中, 全局作用域是针对 window 对象。使用var关键字声明的全局作用域变量属于 window 对象

补充

在函数中,var和let声明的变量都是局部变量,函数外都是全局变量

var、let、const区别

  • var定义的变量,没有块的概念,可以跨块访问, 不能跨函数访问。
  • let定义的变量,只能在块作用域里访问,不能跨块访问,也不能跨函数访问。
  • const用来定义常量,使用时必须初始化(即必须赋值),只能在块作用域里访问,而且不能修改。
  • 同一个变量只能使用一种方式声明,不然会报错

本文作者:RKLS

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!