三、const常量声明方式
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常量声明方式相关推荐
- c语言const常量用法,C++ const常量在多文件编程中的3种用法
<C++多文件编程是什么>一节提到,多文件编程中代码的划分原则是:将变量.函数或者类的声明部分存放在 .h 文件,对应的实现部分放在 .cpp 文件中.值得一提得是,此规律适用于大部分场景 ...
- 关于ECMAScript6 的学习01-ES6 的六种变量声明方式===关于常量const
const 变量声明常量 在声明const 时,必须初始化 否则会出错 const 变量与let 变量类似 作用域同样在{} 的范围内. 也不可以在同一作用域内声明两个同名 const 变量 ...
- java const关键字_const关键字:终于拥有真正的常量声明语句
你好,今天大叔想和你唠扯唠扯 ES6 新增的关键字 -- const.在说 const 关键字之前,大叔先和你唠唠大叔自己对 const 的感受 -- JavaScript 尼玛终于可以声明真正的常量 ...
- SCL语言的数据类型和常量与变量声明方式
SCL语言的数据类型主要包含以下几类: 1. 基本数据类型: - BOOL:布尔类型,取值为TRUE或FALSE. - INT:整数类型,取值范围为-32768~32767(16位PLC)或-2147 ...
- JavaScript:学习笔记(7)——VAR、LET、CONST三种变量声明的区别
JavaScript:学习笔记(7)--VAR.LET.CONST三种变量声明的区别 ES2015(ES6)带来了许多闪亮的新功能,自2017年以来,许多JavaScript开发人员已经熟悉并开始使用 ...
- C++基础知识(三)—— 常量
一个常量(constant)是一个有固定值的表达式. 字(Literals) 字是用来在程序源码中表达特定的值.在前面的内容中我们已经用了很多的字来给变量赋予特定的值.例如: a = 5; 这句代码中 ...
- 必须声明标量变量 @sum_level。_ES6系列—新的变量声明方式
在ES5中,变量声明只有var和function以及隐式声明三种,在ES6中则增加了let.const.import和class四种. 1. let 1.1 块级作用域 let声明的变量的作用域是块级 ...
- 带你掌握C++中三种类成员初始化方式
摘要:在C++11之后,声明时初始化->初始化列表->构造函数初始化. 本文分享自华为云社区<如何编写高效.优雅.可信代码系列(3)--类成员初始化的三种方式>,原文作者:我是 ...
- ES6学习笔记二 新的声明方式和变量的解构赋值!
新的声明方式 在ES5的时候,我们只有一个声明方式,var!但是在es6中,声明进行了扩展,我们加上ES5的var的申明方式,我们有了三种声明方式: var:它是variable的简写,可以理解成变量 ...
最新文章
- 【数据竞赛】学特征工程就看这篇,解析IJCAI18亚军方案之特征工程
- robotframework如何设计web页面的自动化---启动robotframework ride
- 创建型模式—单例模式
- linux闹钟软件下载,电量充满警示闹铃
- python面试代码题_常见python面试题-手写代码系列
- WCF之旅读书笔记(2):WCF如何通过Binding进行通信
- 不支持的major.minor版本52.0 [重复]
- ESXI主机给虚拟机添加USB加密狗设备
- 应用逻辑回归方法对鸢尾花进行分类
- How、what...like的疑问代词_19
- 新手焊接电路板_手工焊接电路板的步骤
- 第一集 斗罗世界 第六章
- 百度地图小区边界爬取
- 三角形,斜线,表头css实现方法
- 三维空间刚体运动——(1)齐次坐标与旋转矩阵
- Java高并发累加器Striped64
- python豆瓣mysql_python爬虫获取豆瓣电影——Python操作MySQL存储数据
- 华硕飞行堡垒键盘背光灯无法显示怎么办?
- 感恩节跟进技巧(附邮件模板)
- ac3音频 机顶盒播放音量变小问题