Loops

As well as conditions with if and else, WMLScript provides looping constructs. There are two types: for and while. Both behave very much as they do in C.

A while loop executes its body while a condition is true. If the condition is false at the start, the body is never executed. (As with if, failure to convert to Boolean is taken as false.) It looks like:

while (condition) body

For example:

while (n > 1) {
    total *= n;
    --n;
}

A for loop is much more flexible and powerful. It looks like:

for (initializer; condition; increment) body

First, the optional initializer is evaluated as an expression. Instead of simply initializing a variable that was previously declared:

for (i=0; i<count; i++)

you can declare the variable in the initializer as well:

for (var i=0; i<count; i++)

The body is then executed while the condition can be converted to Boolean true. (As with while, if the condition isn’t true at the start, the body never gets executed.) The condition may also be omitted, in which case it’s taken as being always true, so the loop runs forever unless something happens in the body to stop it.

After each execution of the body, the increment expression is evaluated as an expression statement. As with the initializer and condition, it may be omitted, in which case it’s simply ignored.

It’s good style to use a for loop when the loop runs over a fixed set of values, such as a range of integers or for the elements in a list, with a single variable tracking your progress through the set. Set up ...

Get Learning WML, and WMLScript now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.