之前用var声明变量,变量想怎么改就怎么改,这里const关键字也是声明变量的,不过声明的是常量,常量就是固定的一个值,不能改变,

例如:const name=“唐僧”;

name="老沙"//  报错 因为它要更改常量name

只在块级作用于起作用,和let关键字一样

if(true){

const age=20;

}

alert(age)//报错 age在代码块外不起作用

不存在变量提升,但必须提前声明,和let一样

if(true){

alert(age);  //报错  使用时 未声明

const age=20;

}

不可重复声明同一个变量

var age=20;

const age=20;//报错  因为变量age已经存在

声明后要赋值,没有赋值要报错

const age=20;

const name;//报错。因为没有赋值;

常量是对象呢?

const obj={"name":"abc"};

obj.name="老沙“;

obj.age=20;

console.log(obj)   //obj{name:"老沙“,age:20}

是不是有点奇怪。不是说const关键字定义的变量不能改变吗?怎么在这里改变了?而且还没有报错?不用担心,暂且一起往下看:

这个时候,我们先引入一个概念:在赋值过程中,我们可以分为传值赋值和传址赋值。这里我们用到了传址赋值,什么叫传址赋值?

传址:在赋值过程中,变量实际上存储的是数据的地址(对数据的引用),而不是原始数据或者数据的拷贝

var student1 = {"name":"张三"};

var student2 = student1;

student2.name = "李四";

console.log(student1);

//结果:输出 {name: "李四"}

console.log(student2);

//结果:输出 {name: "李四"}

为什么student2的name改成了“李四”,student1的那么也变成了“李四”呢?这就是传址赋值!

如果这样写的话就会报错:

const Person = {"name":"张三"};

Person.age = 20;

Person = {};

//错误,企图给常量Person赋新值(新地址)

二,ES6中新增const关键字的使用方法相关推荐

  1. es6中新增对象的特性和方法

    1. 对象简写 //曾经假如是这样的var name = 'xxx'var obj = {name : name, say : function(){alert(this.name)}}//对象简写后 ...

  2. C++中的const关键字(zz)

    [补充]mutable关键字 有时我们希望类的数据成员即使在const成员函数中,依然是可以修改的,这时就可以把它们声明为mutable来实现.这样的应用,比如记录各种操作的调用次数,这时,即使在co ...

  3. 听说ES6中新增了能够与众不同的Symbol数据类型

    前言 小伙伴们大家好.不知道大家有没有遇到这样一种情况:在我们日常开发中,有时候可能会用到一些别人提供的对象,并且业务需要想要在这个对象的基础上进行一些扩展,添加一些属性或方法等.这个时候如果我们不了 ...

  4. ES6中新增字符串方法,字符串模板

    ES6中新增字符串方法,字符串模板 多了两个新方法 startsWith endsWith 返回的是一个Boolean值 let str='git://www.baidu.com/2123123';i ...

  5. ES6中新增数组遍历方法

    ES6中新增的方法 遍历方法: forEach(),fifter(),some(): array.forEach(function(currentValue,index,arr)) // curren ...

  6. C++核心——类中的const关键字

    C++核心--类中的const关键字 在C中我们都知道const修饰的变量时不可改的,C++中这条原则同样使用,但是C++中类中使用const时有一些特殊用法,本文主要记录类中的一些特殊用法. 利用c ...

  7. java在方法中用来抛出异常关键字的是,在Java语言中以下哪个关键字用于在方法上声明抛出异常()...

    在Java语言中以下哪个关键字用于在方法上声明抛出异常() 更多相关问题 [判断题] 现金到账户汇款和账户到账户汇款简称为入账汇款. [单选] 客户办理一笔134.45元按址汇款,附言5个汉字,共应收 ...

  8. ES6中新增的字符串方法

    实例方法:includes(), startsWith(), endsWith() 传统上,JavaScript 只有indexOf方法,可以用来确定一个字符串是否包含在另一个字符串中.ES6 又提供 ...

  9. ES6 let 和 const 关键字

    一.ES5 的 var 关键字 var 存在变量提升 var 允许重复声明,浏览器本身只识别一次,但不会报错 var 声明的变量即是全局变量,也相当于给 GO(window) 设置了一个属性而且两者建 ...

最新文章

  1. cglib invoke 和 invokeSuper 可用的组合
  2. php可关于及||的非正常用法
  3. 系统设计知识:系统模块结构设计知识笔记
  4. 对称机密算法与非对称机密算法
  5. Sniff网络基础原理和软件实现技巧详解
  6. serviceFabric oracle,Oracle ASM和多路径软件的兼容性【转】
  7. python 录制网易云登陆_Python爬虫教程,爬取网易云的音乐
  8. 《Java从小白到大牛》之第13章 抽象类与接口
  9. 《程序员情商》自我修养必备《论语》
  10. 20210725:FLAC刻录音乐CD教程01-下载安装Nero打补丁
  11. vue项目中使用ramda库
  12. 嵌入式编程经典书籍推荐
  13. git冲突产生原因_Git 常见问题 冲突原因分析及解决方案
  14. 字节跳动的“飞阅会”开会模式:先笔谈 后PK 直接生成会议纪要
  15. 小红书怎么看关键词排名?如何提升笔记自然搜索排名
  16. 校园6美女向一男生表白 史上最强表白阵容来袭
  17. gdbt java_GBDT算法详解与代码实现
  18. matlab修改图像分辨率_matlab – 增加灰度图像的分辨率
  19. 二进制数转换十进制数(十进制转二进制)
  20. 物联网技术:物联网技术在农业中的应用

热门文章

  1. 帝国CMS7.5全新后台 仿搜外问答模板 整站带演示数据源码
  2. 自己写的一个LOL云顶智之奕小工具
  3. rdkit环境配置【2021】
  4. 《微服务系列:Eureka服务注册发现中心》
  5. 自动测试如何选择自动化测试框架_机器擅长回归测试,人类善于寻找Bug _Pekka Klärck
  6. LINUX软中断-softirq
  7. YOLOv5训练KAIST数据集
  8. 汇编命令及OD常用命令及断点设置
  9. 圣商,牢记使命成就当代圣商
  10. Delphi-UpperCase 函数