本文详解JavaScript ES6中const关键字的用法。const声明的变量在初始化后不可重新赋值,否则抛出SyntaxError。需注意const仅保证引用地址不变,对象或数组的内容仍可修改。此外,const要求声明时必须初始化,否则也会报错。
const关键字概述
ES6引入了第三个声明变量的关键词,其行为与let相似,即const。
const的基本用法与对象修改
首先来看其基本使用方式:
const c1 = 1;
const c2 = {};
const c3 = [];
Object.getOwnPropertyDescriptor(window,"c1")
//Object {value: 1, writable: false, enumerable: true, configurable: false}
上述示例表明,对已赋值的c2再次进行赋值操作是被禁止的。然而,由于c2是一个对象,其内部属性是可以被修改的,具体示例如下:
c2.p1 = 1;
同理,对于数组类型的c3,也可以向其内部添加元素,因为const仅限制引用地址不变。
声明与初始化的强制要求
使用const声明时存在一个关键约束:声明与初始化必须同时进行,即声明的同时必须赋予初始值。
'use strict';
const c4;//Uncaught SyntaxError: Unexpected token ;
即使省略分号,上述错误依然会发生。此处暂不探讨非strict mode下的特殊情况,感兴趣者可自行验证。
const与let的区别及错误处理
const声明的变量与let类似,主要区别在于const变量仅在声明时允许赋值,后续不可随意修改,否则将引发SyntaxError(语法错误)。
const MAX_CAT_SIZE_KG = 3000; // 正确
MAX_CAT_SIZE_KG = 5000; // 语法错误(SyntaxError)
MAX_CAT_SIZE_KG++; // 虽然换了一种方式,但仍然会导致语法错误
规范设计合理,使用const声明变量时必须提供初始值,若未赋值,同样会抛出语法错误。
const theFairest; // 依然是语法错误,你这个倒霉蛋