ES6—const关键字

目录

一、概述

二、详解

三、拓展


一、概述

        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);

猜你喜欢

转载自blog.csdn.net/weixin_42472040/article/details/120452771