我在TypeScript项目中使用TSLint,它在以下代码中抱怨变量i
:
for (let i = 0; i < body.children.length; i++)
{
body.children[i].classList.remove('active');
}
消息为'Shadowed variable: 'i' (no-shadowed-variable)'
这个循环有什么问题吗?在TS中执行for循环的正确方法是什么?
答案 0 :(得分:11)
阴影表示声明已在外部作用域中声明的标识符。由于这是一个linter错误,它本身并不正确,但它可能会导致混淆,并使外部i
在循环中不可用(它被循环变量遮蔽。)
您可以重命名i
个变量,但如果将规则"prefer-for-of": true
添加到tslint.json
,TSLint会在这种情况下建议一个优雅的解决方案:
for (const child of body.children) {
child.classList.remove('active');
}
(已提供child
尚未宣布: - )