如何解决在JavaScript for循环中重新分配/声明const变量,并使用不同的值将其保存一次以上?
我知道我们无法在JavaScript中重新分配或重新声明const变量,因为它是常量。那代码呢?!
const myCustomDiv = document.createElement('div');
for (let i = 1; i <= 200; i++) {
const newElement = document.createElement('p');
newElement.textContent = 'This is paragraph number ' + i;
myCustomDiv.appendChild(newElement);
}
document.body.appendChild(myCustomDiv);
正如我们在前面的代码中看到的那样,在循环迭代时,将重新声明newElement
const变量。我知道,如果我们重新分配const
之类的textContent
的属性是可以的,但是我们怎么重新声明呢?!
我试图像这样将const
的声明放入全局范围:
const myCustomDiv = document.createElement('div');
const newElement = document.createElement('p');
for (let i = 1; i <= 200; i++) {
newElement.textContent = 'This is paragraph number ' + i;
myCustomDiv.appendChild(newElement);
}
document.body.appendChild(myCustomDiv);
我得到了不同的输出,所更改的只是同一段落的textContent
,您可以查看是否在控制台中运行代码。
我希望任何人都可以帮助并告诉我为什么发生这种情况(如何在循环中重新声明const
变量以及为什么它在全局范围内不起作用?)
如何将相同的变量(newElement
)多次保存在myCustomDiv
中,并使用不同的值?
解决方法
我不确定您要做什么,但是我会尽力告诉您为什么要这样做。
首先循环
const myCustomDiv = document.createElement('div');
for (let i = 1; i <= 200; i++) {
const newElement = document.createElement('p');
newElement.textContent = 'This is paragraph number ' + i;
myCustomDiv.appendChild(newElement);
}
document.body.appendChild(myCustomDiv);
首先,请记住const并让其具有块作用域,这意味着每次您再次进入lop之前,垃圾收集器都会来临并删除不需要的任何东西,因此每次进入在循环内部,您正在创建一个新的常量。这意味着您每次进入循环都会创建一个新的常数。当您尝试将p
的集合保存在div
中时,请使用数组。
const myCustomDiv = document.createElement('div');
const newElement = [];
for (let i = 200; --i;) {
const aux = document.createElement('p');
aux.textContent = 'This is paragraph number ' + i;
newElement.push(aux);
}
...
,
此变量在循环的每次迭代中创建,并且在迭代结束后也被销毁。
简单来说,这是因为变量的作用域。此变量的生存期仅为一个迭代。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。