TypeScript 中的 For 循环
For loops in TypeScript
我在 tslint "prefer-for-of" 中找到一条规则后一直在研究,似乎大多数人都认为不应在 typescript 中使用标准 for 循环,但我找不到任何理由这是为什么。我知道可以使用 for(...of...) 和 for(...in...) 循环,但似乎标准 for 循环在某些情况下仍然有用。任何人都可以解释推理吗?这仅仅是为了可读性的目的,还是有任何性能影响可以使新样式更好?
________________EDIT______________
我做了更多的研究,决定看看渲染后的内容有什么不同 JavaScript,我发现这有点帮助。虽然标准 for 循环和 for(...in...) return 具有相同的值,但它们属于不同的类型并且 for(...of...) return 是数组中的实际值。所以,现在我看到了三种不同方法的区别,但我看不出除了可读性之外是否还有什么可以决定使用哪一种,这意味着我不知道 for(...of. ..) 在不需要索引的情况下,或者只是更容易阅读时,它比标准 for 循环的性能更高。
我们使用 for … of
遍历数组,因为它已成为进行操作的通用方法。主要是JavaScript进化了。现在,一般可以迭代的东西是 Iterator.
使用迭代器,无法直接从其索引访问数据。但是我们仍然可以使用 for … of
循环。
一个例子:
const colors = new Map([
[1, "red"],
[2, "green"],
[3, "blue"]
]);
for (colorName of colors.values())
console.log(colorName)
结果将是:
red
green
blue
这里colors.values()
returns an iterator,不是数组。无法使用索引访问其内容。
关于性能,我建议this benchmark。传统的 for
循环比 for … of
.
稍微好一点
我在 tslint "prefer-for-of" 中找到一条规则后一直在研究,似乎大多数人都认为不应在 typescript 中使用标准 for 循环,但我找不到任何理由这是为什么。我知道可以使用 for(...of...) 和 for(...in...) 循环,但似乎标准 for 循环在某些情况下仍然有用。任何人都可以解释推理吗?这仅仅是为了可读性的目的,还是有任何性能影响可以使新样式更好?
________________EDIT______________
我做了更多的研究,决定看看渲染后的内容有什么不同 JavaScript,我发现这有点帮助。虽然标准 for 循环和 for(...in...) return 具有相同的值,但它们属于不同的类型并且 for(...of...) return 是数组中的实际值。所以,现在我看到了三种不同方法的区别,但我看不出除了可读性之外是否还有什么可以决定使用哪一种,这意味着我不知道 for(...of. ..) 在不需要索引的情况下,或者只是更容易阅读时,它比标准 for 循环的性能更高。
我们使用 for … of
遍历数组,因为它已成为进行操作的通用方法。主要是JavaScript进化了。现在,一般可以迭代的东西是 Iterator.
使用迭代器,无法直接从其索引访问数据。但是我们仍然可以使用 for … of
循环。
一个例子:
const colors = new Map([
[1, "red"],
[2, "green"],
[3, "blue"]
]);
for (colorName of colors.values())
console.log(colorName)
结果将是:
red
green
blue
这里colors.values()
returns an iterator,不是数组。无法使用索引访问其内容。
关于性能,我建议this benchmark。传统的 for
循环比 for … of
.