Values assigned with let and const are seen everywhere in JavaScript. It's become common to hear them explained like so:

"const creates an constant (immutable) binding while bindings created with let can be changed (mutated) without issue."

Although this is an accurate description, it's often misinterpreted to mean that data bound with let is mutable, while data bound via const is immutable, however this doesn't happen to be the case. In this lesson we'll explore this topic further and learn how to create immutable objects in the form of shallow copies using Object.freeze.

It is possible to update array's item value:

const magicNumbers = [,,];
magicNumbers[] = ; console.log(magicNumbers) // 4,2,3

But not able to reassign:

const magicNumbers = [,,];
magicNumbers = [,,]; // error

We can create immutable object in form of shallow copies using Object.freeze:

const magicNumbers = Object.freeze([,,]);
magicNumbers[] = ; // cannot update the value, but no error

If we want error report:

"use strict";

const magicNumbers = Object.freeze([,,]);
magicNumbers[] = ;

[Javascript] Understand common misconceptions about ES6's const keyword的更多相关文章

  1. JavaScript系列文章:谈谈let和const

    JavaScript系列文章:谈谈let和const   最近接触到ES6的一些相关新特性,想借let和const两个命令谈谈JavaScript在变量方面的改进. 由于let和const有很多相似之 ...

  2. [ES6] 22. Const

    'const' keyword is for creating a read only variable, something you can never change once created. ' ...

  3. JavaScript系列文章:从let和const谈起

    注册博客园账号也有好些年了,有事没事经常来逛逛,感觉博客园的同学们一直都很活跃,相比国内其他社区来讲,这里的技术氛围很浓,非常适合学习和交流,所以博主我也决定在这里驻扎了,在这里,博主希望能坚持写一些 ...

  4. ES6 let const 声明变量 块级作用域

    ES6 中除了使用 var 定义变量,还有let.const,定义变量. function getValue(condition){ console.log(typeof value2); // un ...

  5. ES6 let const 关键字

    ECMAScript 和 JavaScript的关系? 前者是后者的规格,后者是前者的实现. 符合ECMAScript 规格的还有 Flash 中的AcionScript 和 TypeScript. ...

  6. JavaScript常用数组操作方法,包含ES6方法

    一.concat() concat() 方法用于连接两个或多个数组.该方法不会改变现有的数组,仅会返回被连接数组的一个副本. var arr1 = [1,2,3]; var arr2 = [4,5]; ...

  7. ES6 let const关键字

    在es6中,引入了let和const关键字: 1.letES6 新增了let命令,用来声明变量.它的用法类似于var,但是所声明的变量,只在let命令所在的代码块内有效. (1)在块级作用域里有效(比 ...

  8. ES6之const命令

    一直以来以ecma为核心的js始终没有常量的概念,es6则弥补了这一个缺陷: const foo='foo'; foo='bar';//TypeError: Assignment to constan ...

  9. 《你不知道的JavaScript -- 上卷》笔记 --- 基于ES6新标准

    1.let A:let关键字:将变量绑定到所在的任意作用域 function process(){ //do something } //在这个块中定义的内容完事就可以销毁 { let someRea ...

随机推荐

  1. PowerDesigner常用技巧

    PowerDesigner是非常强大的数据库设计软件,熟练使用PowerDesigner可以使数据库设计高效而简洁.PowerDesign具体操作在帮助文档(按F1)里面有详细描述,这儿只是列出了常用 ...

  2. C# 设置百分比保留2位数

    double a=50; double b=100; 没有小数部分Label1.Text = (a   /   (a+b)).ToString("0%")   两位小数Label2 ...

  3. HTML中javascript使用dom获取dom节点范例

    <!-- HTML结构 --> <div id="test-div"> <div class="c-red"> <p ...

  4. JSP页面使用EL表达式内容显示不全问题记录

    1.当EL表达式里面的值存在引号之类的字符时, ${caseparam.cp_value}的值为 {"cpage":"1","resType" ...

  5. MySQL学习笔记之右连接

    MySQL的右连接 #右连接,以右表为基表 select course.stuid,course.stuname,sex,course,city from class1 right join cour ...

  6. PostgreSQL的HA解决方案-1主从和备份(master/slave and backup)

    一.部署说明 1.1 实施环境 本文档实验环境如下: PGSQL主机: 192.168.1.45 PGSQL备机: 192.168.1.50 软件和系统版本 Pgsql 版本: pgsql 9.2.4 ...

  7. Python之first script

    1 A first script 1) script1.py - imports a Python module (libraries of additional tools) to fetch th ...

  8. 存档:Telerik Test Studio的摸索笔记

    http://www.51testing.com/?uid-170604-action-spacelist-starttime-1328025600-endtime-1330531200 http:/ ...

  9. CXF-JAX-WS开发(二)spring整合CXF-JAX-WS

    一.服务端 1.目录结构 2.创建maven工程[Packaging:war] 3.引入依赖 <dependencies> <!-- CXF(这里不需要引入cxf-rt-transp ...

  10. Everything is a file

    "Everything is a file" describes one of the defining features of Unix, and its derivatives ...