While循环条件中的语句

时间:2011-08-09 11:49:14

标签: javascript while-loop

假设我收集了一些可以使用TheCollection.GetByID(long)访问的内容,但是我无法提前获取该内容的长度。我想设置一个while循环来遍历每一个。

显然,我可以这样做:

var iter = 0; var thing = TheCollection.GetByID(iter);
while (thing != null) {
    dealWithTheThing(thing);
    iter++;
    thing = TheCollection.GetByID(iter);
}

但我更喜欢通过在构造函数中添加修改来整理它,并且能够得到这样的结果:

var iter = 0; var thing;
while ((thing = TheCollection.GetByID(iter++)) != null) {
    dealWithTheThing(thing);
}

这可能是类似的吗?

2 个答案:

答案 0 :(得分:4)

是的,你的例子很好。你可以在一个条件下进行任务,风格非常清晰(至少对我而言)。

答案 1 :(得分:1)

虽然在循环条件中使用赋值运算符看起来很漂亮,但它可能会引起其他人的混淆,因为很容易将==拼错为=read more: search for "Assignment Expressions")< / p>

在给你警告后,我发现以下内容更具可读性:

var iter = 0; var thing;
while (thing = TheCollection.GetByID(iter++) && thing != null) {
    dealWithTheThing(thing);
}

<击>