【问题标题】:how can we declare a DOM element as const and still modify it? [duplicate]我们如何将 DOM 元素声明为 const 并仍然对其进行修改? [复制]
【发布时间】:2026-02-01 17:20:03
【问题描述】:

我不明白为什么我们可以更改 DOM 元素,即使我们将其声明为常量。如果我们不更改它,那么我们到底在做什么? 提前谢谢你。

const button = document.getElementsByTagName('button')[0];
const domElement = document.getElementsByTagName('div')[0];
button.addEventListener('click', e => {domElement.innerText = "how can I be modified even I am const?"});
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <title>DOM Example</title>
    
</head>
<body>
    <div>change me</div>
    <button>Change a DOM element </button>
</body>
</html>

【问题讨论】:

标签: javascript dom


【解决方案1】:

const 只会阻止您更改变量引用指向的对象。它不会阻止您修改对象本身。

这是非法的:

const x = 5;
x = 4; // ERROR

const x = { a: 1 };
x = { b: 2 }; // ERROR

但这很好:

const x = { a: 1 };
x.a = 5;

【讨论】:

  • 你知道用const(而不是let)声明一个对象是否被认为是一种好的做法,同时打算改变它的属性,就像你上一个例子一样?跨度>
  • 您会发现关于“良好实践”和不变性的不同意见,但在我看来,是的,这完全是良好的实践。在 JS 中 const 并不意味着(或暗示)被引用的整个对象一定是不可变的,只是引用本身是不可变的。因此,如果您不打算改变变量指向的对象,那么请继续将其设为const,即使您确实打算改变对象本身。
  • 太好了,感谢您的洞察力!
最近更新 更多