博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
三、const常量声明方式
阅读量:6221 次
发布时间:2019-06-21

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

cosnt是es6中常量的声明方式,声明方法和var、let声明方式一样,但是有点不同的是,const声明方式必须立即初始化变量,并且也不能在后面改变他的值

const foo; // SyntaxError: Missing initializer in const declaration复制代码

下面这个改变值也会报错

const foo = 1;foo = 2; // TypeError: Assignment to constant variable复制代码

常量也是块级作用域,以下演示

function func() {    if (true) {        const tmp = 123;    }    console.log(tmp); // Uncaught ReferenceError: tmp is not defined}func();复制代码

总是说const申明的常量是不可变的,并不意味着是不管怎样都不能改变 其实在js中基本数据类型==Undefined、Null、Boolean、Number 和String==

用const声明方式的值是不能改变的,但是如果的引用类型,如对象,那里面的值是可以改变的

const foo = {};foo['prop'] = "Moo"; // This works!console.log(foo);复制代码

如果想要foo不会被改变,可以使用Object.freeze(obj) 当我们冻结一个对象的值的时候,这个对象我们不能改变,不能添加值和改变属性,例下所示:

const foo = Object.freeze({});foo.prop = 123;console.log(foo.prop) // undefined复制代码

上面这样使用不会报错,但是在严格模式下"use strict",那就不一样了

"use strict";const foo = Object.freeze({});foo.prop = 123; // SyntaxError: Cannot add property prop, object is not extensible复制代码

总结

const的一个重要点是变量是不可变的,而不是变量指向的值。所在在对象中是改变它的属性值的,如果想要它不可变,可以在"use strict"使用Object.freeze(…​)

转载于:https://juejin.im/post/5b40dfebe51d45194e0b7ea9

你可能感兴趣的文章
MySql ZIP 包 安装 的详细步骤以及可能的错误
查看>>
ROW_NUMBER() OVER函数的基本用法
查看>>
Hadoop LineRecordReader实现分析
查看>>
Android利用Fiddler进行网络数据抓包
查看>>
我的友情链接
查看>>
百度8秒君:文件存网盘真的靠谱么?
查看>>
TCP/IP参考模型
查看>>
linux基础_根文件系统
查看>>
一个奇葩常见的问题 nginx 403 forbidden错误
查看>>
Hibernate查询方式汇总
查看>>
hpux filecache问题
查看>>
下一代太阳自适应光学技术让太空“天气预报”更精准
查看>>
气象与情绪有何联系?低温天气比恐袭更容易令人抑郁
查看>>
使用Jmeter对mysql进行性能测试入门
查看>>
用java在图片上写字
查看>>
spring的成功配置样式
查看>>
spring注解之 @profile
查看>>
Linux 重定向以及管道讲解
查看>>
Myeclipse debug 调试模式
查看>>
exchange IE登录提示http 500 内部服务器错误
查看>>