ES6—const关键字

本文详细介绍了ES6中const关键字的作用,包括声明规则(立即赋值且不可修改)、防止重复声明、块级作用域和不存在提升。还探讨了const的本质、变量声明方法的演变以及在顶层对象和globalThis中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

一、概述

二、详解

三、拓展


一、概述

        const是ES6新增的关键字,作用是声明一个只读的常量。注意,常量标识符一般用大写字母表示。

const A = 100;

A = 200; // 报错:Uncaught TypeError: Assignment to constant variable

        使用const声明常量有如下四个特点。

1)声明时必须立即赋值,之后不允许修改常量值
2)不允许重复声明
3)块儿级作用域
4)不存在变量提升

二、详解

声明时必须立即赋值

        const关键字声明常量后,不允许修改其值,所以常量一旦声明,必须立即初始化,即声明和赋值必须一起,不能分开。

        如下代码所示,const关键字只声明不赋值,则会报错。

const A; // 报错:Uncaught SyntaxError: Missing initializer in const declaration

不允许重复声明

        如下代码所示,const不允许在相同作用域内,重复声明同一个变量。

var ness = 100;

const ness = 200; // 报错:Uncaught SyntaxError: Identifier 'ness' has already been declared

块级作用域

        const与let关键字一样,只在当前块级作用域中有效。

{
    const dog = "京巴";
    console.log(dog); // 京巴
}
console.log(dog); // 报错:Uncaught ReferenceError: dog is not defined

不存在"变量"提升

        const关键字声明的常量同样不存在提升行为,同样存在暂时性死区,只能在声明语句后面使用。

console.log(NESS); // 报错:VM58:1 Uncaught ReferenceError: NESS is not defined
const NESS = 200;

三、拓展

拓展1:本质

        const保证的是变量指向的内存地址所保存的数据不变。原始值(数值、字符串、布尔值)内存地址里面保存的就是值本身,因此等同于常量。而引用值,内存地址中保存的仅仅是一个指向实际数据的指针,const只能保证该指针是固定的,指针指向的数据结构则不受控制。

const OBJ = { name: 100 };
OBJ.name = 200;

console.log(OBJ); // 200

拓展2:JS声明变量的方法

        JS共有6种声明变量的方法,其中ES5提供了两种,分别是var关键字和function关键字,ES6提供了四种,分别是let关键字、const关键字、import关键字和class关键字。       

拓展3:顶层对象

       浏览器环境中顶层对象是指window对象,ES5中顶层对象的属性就是全局变量。ES6做了优化,var关键字和function关键字声明的变量依旧是顶层对象的属性,而ES6提供的声明变量的方法不再对顶层对象产生影响。

var demo1 = 100
console.log(window.demo1) // 100

let demo2 = 200
console.log(window.demo2) // undefined

拓展4:globalThis对象

        ES11提供了globalThis对象,该对象始终指向全局对象window。

console.log(globalThis);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值