const 与 readonle 的异同
const 与 readonly 本质的区别是,const 是编译时常量,readonly 是运行时常量。
编译时常量,就是在编译时就需要确定的;而运行时常量是在运行时确定的。
- const 效率略高于 readonly。
- const 只用于数字和字符串;readonly 用于任何类型。
- const 用于全局变量、局部变量或 class 的 field;readonly 只用于 class 的 field,比如函数中就不能用 readonly,这就示上述示例中 readonly 为什么要放在 class 中的原因了。相关阅读:谈谈 const 与 readonly 的赋值。
- const 修饰的 class 的 field,为该类的所有实例共享;readonly 修饰的 class 的 field,为该类的某一个实例独享,除非我们加了 static。
- 有些地方只能用 const。
- 有些地方只能用 readonly。
- 确定的值用 const,比如圆周率,再比如设计的系统中用 1 表示 OK。
- 不确定但要求不允许更改的值用 readonly,这取决于实际应用,比如用户管理系统中不允许更改工号,那么工号就可以考虑用 readonly,因为在编译的时候,无法确定是哪个员工的工号。
- const 必须在声明时赋值,即必须初始化;而 readonly 在声明时不赋值也不报错。
- const 一旦赋值在任何地方都不能再修改其值;而 readonly 可以在类构造函数中再次修改。
最后请记住:const 表示常量,readonly 表示只读域。
转载于:https://www.cnblogs.com/weiyuxinghuacun/archive/2011/03/04/1970864.html
const 与 readonle 的异同相关推荐
- const与#define的异同
1 作为常量时的异同 (0) 相同 两者都可以用来定义常量: #define PI 3.14159 // 常量宏 const doulbe Pi=3.14159; // 常量 (1 ...
- 对比let、const、var的异同
let.const和var的区别 var : 作用域是函数体的全部,声明变量提升 console.log(num);//undefinedvar num = 2 //循环内变量过度共享for (var ...
- 《深入理解ES6》笔记——块级作用域绑定(1)
本章涉及3个知识点,var.let.const,现在让我们了解3个关键字的特性和使用方法. var JavaScript中,我们通常说的作用域是函数作用域,使用var声明的变量,无论是在代码的哪个地方 ...
- 工作中常用到的ES6语法
一.let和const 在JavaScript中咱们以前主要用关键var来定义变量,ES6之后,新增了定义变量的两个关键字,分别是let和const. 对于变量来说,在ES5中var定义的变量会提升到 ...
- 程序员面试宝典(第二版)要点汇总
第五章 P34,作用域符::,代表的是程序中的全局变量或者标准程序库的函数 P35,判断条件与(&.i++),其中当判断条件中前面的条件为0后面的条件就不用计算了,或也是如此 P36,编程风格 ...
- 5分钟掌握var,let和const异同
转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具.解决方案和服务,赋能开发者. 原文出处:https://dzone.com/articles/javascript-difference- ...
- Unix进程和线程管理及其异同
Unix进程和线程管理及其异同 一,进程 1,什么是进程 在最初的单处理器系统中,系统中的多道程序按照一定规则切换而实现多任务处理,后来发现多个程序并发导致系统资源被共享,为了描述和管理程序对共享资源 ...
- Factory模式与Prototype模式的异同
原型模式与工厂模式的定义,本文不想在这讲太多,本文主要想在这讲一下对原型模式的一些误解--将原型模式等价于工厂模式: 为什么会产生这种误导呢?其实也不是我们的错,关键在于设计模式这本书以及网上的其它资 ...
- C++ const与define
昨日面试被组考官问及const与define异同,开始还简单,后来被问的我脑袋是一团浆糊.今日差点资料总结一下 1. const与define. 两者都可以用来定义常量,但是const定义时,定义了常 ...
最新文章
- 【Paper】41_[24]novel type of phase transition in a system of self-driven particles
- 由防止表单重复提交引发的一系列问题--servletRequest的复制、body值的获取
- Field XXXX input value is longer than screen field-BDC
- python教程:模块的作用与说明
- 关于遗留系统维护的讨论
- Word2013中怎样设置同一文档内粘贴选项
- [vue] vue部署上线前需要做哪些准备工作?
- 华为摄像头搜索软件_华为Mate 40 Pro评测:硬件和软件表现都近乎完美
- 超全的JS重新加载当前页面的几种方式
- Atitit 项目范围管理 目录 1. 应该包含下面过程:启动、范围计划、范围定义、范围核实及范围变更控制	1 1.1. 项目范围管理的五个过程	1 2. 启动过程	1 2.1. 项目章程(如质量、
- php嗅探视频地址,用PHP嗅探youku视频的真实地址!
- 将keras的模型封装成可转换为tensorlow的.pb格式,并生成.pbtxt文件
- 【坦白说】如何确定对方身份?
- 开发一个小程序商城需要多少钱?
- 小米5破解安装centos系统
- 西南石油大学计科院主页
- gnuplot 使用示例
- ANDROID XML图像资源文件详细讲解(一)
- 孵化中国网络安全未来,ISC 2021创新独角兽沙盒大赛开启招募
- Hexo-Theme-Sakura 实践记录
热门文章
- echo输出到stderr
- 如何让jQuery执行同步而不是异步的Ajax请求?
- java编程窗口在哪里下载_EeJava下载
- 风变编程python笔记_自学Python和风变编程
- AWT_Swing_图片Icon
- [Vue warn]: Duplicate keys detected: '0'. This may cause an update error. found in解决办法
- 四个数据欧几里得距离_从单词嵌入到文档距离 :WMD一种有效的文档分类方法...
- ubuntu安装mysql_如何在Ubuntu14.04中安装mysql
- python如何使用函数_python中函数使用
- Halcon 摄像机标定流程-代码实现