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/5b40e048e51d4519596b552d

三、const常量声明方式相关推荐

  1. c语言const常量用法,C++ const常量在多文件编程中的3种用法

    <C++多文件编程是什么>一节提到,多文件编程中代码的划分原则是:将变量.函数或者类的声明部分存放在 .h 文件,对应的实现部分放在 .cpp 文件中.值得一提得是,此规律适用于大部分场景 ...

  2. 关于ECMAScript6 的学习01-ES6 的六种变量声明方式===关于常量const

    const 变量声明常量   在声明const 时,必须初始化   否则会出错 const 变量与let 变量类似 作用域同样在{} 的范围内. 也不可以在同一作用域内声明两个同名 const 变量 ...

  3. java const关键字_const关键字:终于拥有真正的常量声明语句

    你好,今天大叔想和你唠扯唠扯 ES6 新增的关键字 -- const.在说 const 关键字之前,大叔先和你唠唠大叔自己对 const 的感受 -- JavaScript 尼玛终于可以声明真正的常量 ...

  4. SCL语言的数据类型和常量与变量声明方式

    SCL语言的数据类型主要包含以下几类: 1. 基本数据类型: - BOOL:布尔类型,取值为TRUE或FALSE. - INT:整数类型,取值范围为-32768~32767(16位PLC)或-2147 ...

  5. JavaScript:学习笔记(7)——VAR、LET、CONST三种变量声明的区别

    JavaScript:学习笔记(7)--VAR.LET.CONST三种变量声明的区别 ES2015(ES6)带来了许多闪亮的新功能,自2017年以来,许多JavaScript开发人员已经熟悉并开始使用 ...

  6. C++基础知识(三)—— 常量

    一个常量(constant)是一个有固定值的表达式. 字(Literals) 字是用来在程序源码中表达特定的值.在前面的内容中我们已经用了很多的字来给变量赋予特定的值.例如: a = 5; 这句代码中 ...

  7. 必须声明标量变量 @sum_level。_ES6系列—新的变量声明方式

    在ES5中,变量声明只有var和function以及隐式声明三种,在ES6中则增加了let.const.import和class四种. 1. let 1.1 块级作用域 let声明的变量的作用域是块级 ...

  8. 带你掌握C++中三种类成员初始化方式

    摘要:在C++11之后,声明时初始化->初始化列表->构造函数初始化. 本文分享自华为云社区<如何编写高效.优雅.可信代码系列(3)--类成员初始化的三种方式>,原文作者:我是 ...

  9. ES6学习笔记二 新的声明方式和变量的解构赋值!

    新的声明方式 在ES5的时候,我们只有一个声明方式,var!但是在es6中,声明进行了扩展,我们加上ES5的var的申明方式,我们有了三种声明方式: var:它是variable的简写,可以理解成变量 ...

最新文章

  1. 【数据竞赛】学特征工程就看这篇,解析IJCAI18亚军方案之特征工程
  2. robotframework如何设计web页面的自动化---启动robotframework ride
  3. 创建型模式—单例模式
  4. linux闹钟软件下载,电量充满警示闹铃
  5. python面试代码题_常见python面试题-手写代码系列
  6. WCF之旅读书笔记(2):WCF如何通过Binding进行通信
  7. 不支持的major.minor版本52.0 [重复]
  8. ESXI主机给虚拟机添加USB加密狗设备
  9. 应用逻辑回归方法对鸢尾花进行分类
  10. How、what...like的疑问代词_19
  11. 新手焊接电路板_手工焊接电路板的步骤
  12. 第一集 斗罗世界 第六章
  13. 百度地图小区边界爬取
  14. 三角形,斜线,表头css实现方法
  15. 三维空间刚体运动——(1)齐次坐标与旋转矩阵
  16. Java高并发累加器Striped64
  17. python豆瓣mysql_python爬虫获取豆瓣电影——Python操作MySQL存储数据
  18. 华硕飞行堡垒键盘背光灯无法显示怎么办?
  19. 感恩节跟进技巧(附邮件模板)
  20. ac3音频 机顶盒播放音量变小问题

热门文章

  1. Python学习笔记(八)
  2. DT时代下[个推3.0]遵循的四个法则
  3. hdu 2896:病毒侵袭
  4. http状态码302,303,307的区别
  5. Win7:“找不到该项目”错误解决大法
  6. 转:Tkinter教程之Text(2)篇
  7. pyspark常用API
  8. 3文件提取器_eMail Address Extractor for Mac(邮件地址提取器)
  9. 一条命令安装Windows Subsystem for Linux
  10. Linux的命令行界面简介