TypeScript中的For循环

时间:2019-03-21 15:24:35

标签: typescript tslint

我在tslint中找到了“首选”规则后一直在进行研究,似乎大多数人都认为不应在打字稿中使用for循环标准,但是我找不到关于为什么会这样。我知道可以使用for(... of ...)和for(... in ...)循环,但似乎for循环的标准在某些情况下仍然有用。谁能解释原因?这是仅出于可读性目的,还是对性能产生了影响,使新样式变得更好?

________________ EDIT ______________

我做了一些进一步的研究,并决定查看渲染的JavaScript的区别,这对我有所帮助。虽然标准的for循环和for(... in ...)都返回相同的值,但它们的类型不同,并且for(... of ...)返回的是数组中的实际值。所以,现在我看到了三种不同方法的区别,但是我看不出除了可读性之外还有什么要使用的决策,这意味着我不知道for(... of。)。 ..)在不需要索引的情况下,或者比它更易于阅读的情况下,比循环标准具有更高的性能。

TypeScript Playground

1 个答案:

答案 0 :(得分:0)

我们使用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,而不是数组。无法使用索引访问其内容。

某些文档:Iterators and generators

关于性能,我建议使用this benchmark。传统的for循环比for … of略好。