在闭包中,我们知道每个循环迭代变量"i"都是一个新的副本,那么为什么常量"i"不在循环中工作



这段代码工作,每个回调引用一个不同的i,这表明对于每个循环迭代,创建一个新的i副本,由于回调形成一个闭包,具有不同的"i";每一次

const arr = [10, 12, 15, 21];
for (let i = 0; i < arr.length; i++) {
setTimeout(function() {
console.log('Index: ' + i + ', element: '+ arr[i]);
}, 3000)
}

给出错误:赋值给常量变量。在这种情况下,为什么不为每个循环迭代创建一个新的常数i?

const arr = [10, 12, 15, 21];
for (const i = 0; i < arr.length; i++) {
setTimeout(function() {
console.log('Index: ' + i + ', element: '+ arr[i]);
}, 3000)
}

因为常量不能被修改,所以你不能在常量上使用i++。

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/const

++i不修改i的实例-它创建了一个新的实例,并将其赋值给i。如果i被定义为const,则不能将值赋给它,因此会出现错误。

相关内容

  • 没有找到相关文章

最新更新