【问题标题】:JS: can a var/object declared as const be deleted [duplicate]JS:可以删除声明为 const 的 var/object [重复]
【发布时间】:2015-08-15 22:04:28
【问题描述】:

新手问题:

js中可以删除或覆盖const对象吗?

const a = function myFunc(){}; // some code to delete 'a' and 'myFunc()' here.

【问题讨论】:

  • 我在问这两个问题。
  • @davidLeak 为什么你认为这叫做“删除”?
  • 我也指的是全局范围内的 const。
  • 我可以为 a if const a 释放内存吗? ?
  • sorry const a = "string or something here".

标签: javascript ecmascript-6


【解决方案1】:

使用const 的一个缺点是您不能随意清除变量(const 可以防止以任何方式更改它)。

如果变量不在全局范围内,那么垃圾收集器会在它超出范围时处理它。如果它在全局范围内,那么您将无法摆脱它。解决方法是停止对您希望修改的变量使用 const

分配给const 变量的对象的属性不受const 声明的影响,因为const 声明会影响变量,而不是它指向的内容。如果要影响对象的属性,可以使用 Object.freeze()Object.seal()

【讨论】:

  • 谢谢,这很有帮助。我现在明白了。
  • 跟进问题。这是否还包括它的属性和方法?我可以修改这些吗?
  • @davidLeak - 自己尝试这些东西需要几分钟。在当前版本的 Chrome 中,const 不会阻止将属性分配给由const 声明的变量指向的对象。它只是防止分配给变量本身。这可能是因为对象不是 const,只是变量。 Object.freeze()Object.seal() 影响对象的属性。
  • 如果我自己尝试过,我就不会刚刚了解 Object.freeze() 和 Object.seal()。 :) 再次感谢。
  • 仅供参考 - const a = {};变量 b = 新的 a; a = 33;我只是将 const 'a' 改回 var。
猜你喜欢
  • 2018-08-15
  • 2023-04-05
  • 2021-09-21
  • 2016-04-26
  • 2021-02-12
  • 2019-11-24
  • 1970-01-01
  • 2011-05-01
相关资源
最近更新 更多