如果我做了类似下面的事情,这被认为是不理想的(表现明智的)吗?
// Is this optimal?
foreach (var fruit in basket.Fruits())
{
// ....
}
// What about this?
for (var i = 0; i < basket.Fruits().length; ++i) {
// ....
}
// Alternate way.
var fruits = basket.Fruits();
foreach (var fruit in fruits)
{
// ....
}
我正在寻找适用于.Net和Javascript的答案。
谢谢。
答案 0 :(得分:2)
两者都具有同样的表现。 basket.Fruits()
返回一个对象,JavaScript将为该对象创建一个迭代器。
另一种解决方案是使用
Object.keys(basket.Fruits()).forEach(function(fruit) {
// ...
});
无论哪种方式,都不要专注于这种优化。 JavaScript很快,并且有许多自动优化。您应该专注于使您的代码尽可能清晰。完成后,如果发现速度很慢,请专注于优化该部分。
根据您的编辑,您可以将数组的长度存储在循环的初始化表达式中的变量中。然后谓词表达式可以比较i<len
而不是每次迭代计算数组长度。
for (var i=0; len=basket.Fruits().length; i<len; i++) ...