javascript - 我们如何将 DOM 元素声明为 const 并仍然对其进行修改?

标签 javascript dom

这个问题在这里已经有了答案:





Keyword 'const' does not make the value immutable. What does it mean?

(5 个回答)


4年前关闭。




我不明白为什么即使我们将 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>

最佳答案

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

这将是非法的:

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

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

但这很好:
const x = { a: 1 };
x.a = 5;

关于javascript - 我们如何将 DOM 元素声明为 const 并仍然对其进行修改?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48291307/

相关文章:

javascript - 如何将总纳秒转换为 HH :MM:SS:ms:ns in JavaScript and node? 格式的字符串

JavaScript Date.getWeek()?

javascript - 来自 W3C 验证器的错误 “Element script must not have attribute defer unless attribute src is also specified”

如果数组超过 10 个项目,Javascript 按子数组中的值对数组进行排序

javascript - js : element. className 不起作用(创建暗模式)

javascript - 如何从对象中取消设置对象

javascript - CSS 区域的实现方法

javascript - 在 .replaceWith() 之后恢复或保留 select 的事件

javascript - 检查 contenteditable div 中的元素(文本)是否已被删除

angular - 如何在 Angular2 应用程序中直观地突出显示/捕获不必要的 DOM 更改