何时在 JavaScript 中对对象使用 const?

2023-12-28

我最近读到了有关 ES6 的文章const关键字,当有这样的东西时我可以理解它的重要性:

(function(){
    const PI = 3.14;
    PI = 3.15; //  Uncaught TypeError: Assignment to constant variable
})();

所以,没有人可以改变我的PI多变的。

我的误解是我不明白在什么情况下使用const与物体一起是有意义的(除了阻止人们做myObj = newValue;).

(function(){
    const obj = {a:1 ,b: 2, c:3};
    //obj = {x:7 , y:8, z: 9}
    //This is good
    //TypeError: Assignment to constant variable.

    obj.a=7; obj.b=8 ; obj.c=9;
    console.log(obj); //outputs: {a: 7, b: 8, c: 9}
})();

所以当声明一个对象时:我什么时候应该说:现在我must声明我的对象const?


这是网络上常见的误解,CONST不会创建不可变变量,而是创建不可变绑定。

eg.

 const temp1 = 1;
 temp1  = 2 //error thrown here.

But

 temp1.temp = 3 // no error here. Valid JS code as per ES6

so const创建到该特定对象的绑定。 const 确保变量temp1不会有任何其他对象的绑定。

现在来到Object。我们可以得到不可变的特征Object通过使用Object.freeze

const temp3 = Object.freeze( {a:3,b:4})
temp3.a = 2 // it wont update the value of a, it still have 3
temp3.c = 6 // still valid but wont change the object
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

何时在 JavaScript 中对对象使用 const? 的相关文章

随机推荐

  • 差异化包装

    升级应用程序时 Test ServiceFabricApplicationPackage命令会对版本号未更改的每个代码包抛出错误 这表示内容已更改 即使代码未更改 我知道有一个功能可以创建部分包 但我无法使用它 我的问题是 如何检查代码包内
  • 如何在其他工作表的应用程序脚本中请求或获得谷歌电子表格访问权限?

    我正在为我的自定义函数编写 A 电子表格的应用程序脚本 并尝试使用从那里获取 B 电子表格中的值openUrl 然而 我得到了ERROR当我使用自定义函数时在电子表格中 在谷歌文档中 它说 如果您的自定义函数抛出错误消息 You do no
  • 使用powershell在其他域上查找“网络用户”?

    我想做的是 net user user1 DOMAIN 但是 我想为计算机未加入但可以访问的域执行此操作 用户分布在 DOMAIN1 和 DOMAIN2 中 我运行它的计算机已加入 DOMAIN1 但会在 DOMAIN2 上查找用户 这可以
  • 在 mongodb 的嵌套数组中插入数据[重复]

    这个问题在这里已经有答案了 可能的重复 MongoDB 更新嵌套数组中的字段 https stackoverflow com questions 9611833 mongodb updating fields in nested array
  • Safari 中的垂直居中

    我在 Safari 中使用 margin auto 0 时遇到垂直居中问题 在嵌套在带有 display inline flex 的 div 内的 div 上 它在 Firefox Chrome Opera 中工作得很好 但在 Safari
  • Travis CI 失败,因为无法接受许可证约束布局

    在我写这个问题之前 我已经搜索过同样的问题 他们确实有导出许可证 因为仍然使用 alpha 版本的约束布局 但现在android已经发布了约束布局的稳定版本 我尝试了很多设置但仍然失败 我最新的 travis yml language an
  • Django - 显示图像字段

    我刚刚开始使用 Django 还没有找到很多关于如何显示的信息imageField 所以我做了这个 模型 py class Car models Model name models CharField max length 255 pric
  • 如何判断闭合路径是否包含给定点?

    在 Android 中 我有一个 Path 对象 我碰巧知道它定义了一条闭合路径 并且我需要弄清楚给定点是否包含在路径中 我所希望的是类似的东西 路径 contains int x int y 但这似乎不存在 我寻找这个的具体原因是因为我在
  • 如何使用 signalr 将 json 对象发送到 .net 服务器

    我正在开发一个 Angular 应用程序 我必须使用 netcore 服务器和 signalR 将数据从角度形式发送到外部服务器 我可以使用信号集线器在 Angular 客户端和控制器之间建立连接 但我很困惑如何将 json 对象从客户端发
  • 在 bash 中选择不同的可执行文件

    当我想跑步的时候make为了生成一些可执行文件 它总是使用 Sunmake位于 在 usr local bin make而不是 GNU make 可以在以下位置找到 usr sfw bin gmake 我如何告诉操作系统使用 GNU mak
  • TkInter:了解解除绑定功能

    TkInter 是否unbind http effbot org tkinterbook widget htm Tkinter Widget unbind method函数阻止应用它的小部件将更多事件绑定到小部件 澄清 假设我在程序的早期将
  • Python 中以下代码有什么问题?

    我试图对一个字段实施约束 但它不会导致约束验证 而是允许保存记录而不显示任何约束消息 def check contact number self cr uid ids context None for rec in self browse
  • 在 AOSP Android 6.0 上更新 WebView

    我正在开发基于 AOSP Android 6 0 Marshmallow 的设备 我想将标准 Android webview 更新到最新版本以使用最新的 JavaScript 为此我更换了external chromium webview
  • 使 JButton 在 JTable 内可单击

    这是我想做的事情的屏幕截图 发生的情况是 JButton 显示正确 但当我单击它时没有任何反应 经过一番搜索 我发现Object由返回table getValueAt 是一个字符串而不是 JButton 这是代码 tblResult new
  • 是否有“纯粹适用的任一”的标准名称或实现?

    我经常发现我所谓的 纯粹应用性 的用处Either i e Either与Applicative只要我们不实现一个实例就可用Monad实例也是如此 newtype AEither e a AEither unAEither Either e
  • 使用可变批量大小加载数据?

    我目前正在研究基于补丁的超分辨率 大多数论文将图像分割成更小的补丁 然后使用这些补丁作为模型的输入 我能够使用自定义数据加载器创建补丁 代码如下 import torch utils data as data from torchvisio
  • 基于列合并数据框,仅保留第一个匹配项

    我有 2 个如下所示的数据框 df 1 Index Fruit 1 Apple 2 Banana 3 Peach df 2 Fruit Taste Apple Tasty Banana Tasty Banana Rotten Peach R
  • 防止违反 PCI 标准暴露敏感数据 - response.getWriter().write(xml.toString())

    我正在根据代码审计报告修复代码 它针对具有语法的行显示 防止敏感数据的暴露 response getWriter write xml toString 整个代码如下 String alertId request getParameter a
  • 我可以不映射/平面映射一个OptionalInt吗?

    为什么好像没有map flatMap OptionalInt 或其他原始可选风格的方法 The stream 映射操作允许对象和基元之间的转换 但为什么Optional不利用这一点呢 OptionalInt profileId Option
  • 何时在 JavaScript 中对对象使用 const?

    我最近读到了有关 ES6 的文章const关键字 当有这样的东西时我可以理解它的重要性 function const PI 3 14 PI 3 15 Uncaught TypeError Assignment to constant var