我在禁用tslint一段时间后进行了编码,当我稍后启用它时,我看到了一些错误并修复了它。
由此:
for (let index = 0; index < combinedUniqueIndexes.length; index++)
对此:
for (const index = 0; index < combinedUniqueIndexes.length; index + 1)
但这样做之后,我的代码就崩溃了!我不知道我做错了什么!请帮帮这个可怜的人!
(如果有人需要整个项目,那么我也可以,只要问!(
第二个for循环中有两个错误。
-
将
const index = 0
更改为let index = 0
。const
表示不能重新分配标识符,let
表示可以重新分配标识符。 -
将
index + 1
更改为index++
之前的内容。index++
实际上意味着index = index + 1
使index
在每次经过for循环时递增1。
它崩溃的原因是因为每次for循环都无法更改index
,因为const
不允许它更改。
您不能更改const
值,因此递增它应该会失败。迭代器应该使用let
而不是const
。有关常量,请参阅MDN文档。
index + 1
不会更改index
,则循环是无限的。要增加,请执行
index += 1
不能将常量用于for
循环索引。循环的工作方式是每次迭代都增加索引变量,但不能使用常量。您需要在此处使用let
。
此外,您更改了循环的第三部分,使其不会实际更改索引,因此现在您的循环将永远运行,它永远不会增加索引。
你需要回到原来的状态。你改变这个的原因是什么?
使用经典的C样式for
循环时,索引不能是常量,因为它在每次迭代时都会递增(或递减(。
for (let i=0; i < length; i++) { ... }
我不建议使用var
来声明和初始化索引,因为它将存在于循环的范围之外。一般来说,let
更安全,var
会产生难以检测的错误。
但是,当您使用for of
或for in
循环时,最好使用常量:
for (const item of arr) { ... }
或者。。。
for (const key in obj) { ... }
您可以这样做,因为在for of
和for in
循环中,索引在每次迭代开始时都会初始化。请记住,不要使用for in
来遍历字符串和数组(有序的数据结构(,因为它可能会打乱元素的顺序(我从未遇到过,但不能保证不会(。
循环有两个问题
for (const index = 0; index < combinedUniqueIndexes.length; index + 1)
- 您不能更改
const
的值。不要对计数器使用常量 index+1
您没有将表达式的值赋值回索引。所以索引总是一样的
所以你应该使用类似的代码
for (let index = 0; index < combinedUniqueIndexes.length; index++)
或
for (let index = 0; index < combinedUniqueIndexes.length; index += 1)
或
for (let index = 0; index < combinedUniqueIndexes.length; index = index + 1)