博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ES6 const
阅读量:5284 次
发布时间:2019-06-14

本文共 1041 字,大约阅读时间需要 3 分钟。

const声明一个只读的常量。一旦声明,常量的值就不能改变。

const PI = 3.1415;PI // 3.1415PI = 3;// TypeError: Assignment to constant variable.

const声明的变量不得改变值,这意味着,const一旦声明变量,就必须立即初始化,不能留到以后赋值。

const PI;// Missing initializer in const declaration

上面代码表示,对于const来说,只声明不赋值,就会报错。

const的作用域与let命令相同:只在声明所在的块级作用域内有效。

if (true) {    const MAX = 5;}  MAX // Uncaught ReferenceError: MAX is not defined

const命令声明的常量也是不提升,同样存在暂时性死区,只能在声明的位置后面使用。

if (true) {    console.log(MAX); // ReferenceError    const MAX = 5;}

const声明的常量,也与let一样不可重复声明。

var message = "Hello!";let age = 25;// 以下两行都会报错const message = "Goodbye!";const age = 30;

const实际上保证的,并不是变量的值不得改动,而是变量指向的那个内存地址不得改动。对于简单类型的数据(数值、字符串、布尔值),值就保存在变量指向的那个内存地址,因此等同于常量。但对于复合类型的数据(主要是对象和数组),变量指向的内存地址,保存的只是一个指针,const只能保证这个指针是固定的,至于它指向的数据结构是不是可变的,就完全不能控制了。因此,将一个对象声明为常量必须非常小心。

const foo = {};// 为 foo 添加一个属性,可以成功foo.prop = 123;console.log(foo.prop) // 123
const a = [];a.push('Hello'); // 可执行console.log(a[0]); // Helloa.length = 0;    // 可执行console.log(a[0]); // undefined

转载于:https://www.cnblogs.com/jiqing9006/p/9226084.html

你可能感兴趣的文章
brock pallet
查看>>
hihocoder--1384 -- Genius ACM (倍增 归并)
查看>>
网络字节序和主机字节序转换-------- “可交换操作”
查看>>
Python教程[廖雪峰],主要是实践
查看>>
python记录_day03 字符串
查看>>
MarkDown测试
查看>>
私有属性和私有方法
查看>>
java.util.regx Demo
查看>>
react-fetch数据发送请求
查看>>
C#中的多线程使用 -- Thread 类详解(转)
查看>>
Devices下设备的进程显示为问号的问题
查看>>
遍历文件夹的方法
查看>>
网络协议分析软件
查看>>
wpf的VisualStateManager
查看>>
leetcode 383. 赎金信(Ransom Note)
查看>>
Mysql联合查询UNION和UNION ALL的使用介绍
查看>>
node js学习(二)——REPL(交互式解释器)
查看>>
NMON记录服务器各项性能数据
查看>>
Xitrum学习笔记05 - 模板引擎
查看>>
JavaBase 变量,数据类型和运算符
查看>>