It’s here now: https://thomasperi.github.io/clumpyjs/control
Suppose we wanted to skip all the numbers that are divisible by ten, or if the number meets some special condition, exit the loop.
var i;
// Real Loop:
for (i = 0; i < 100000; i++) {
if (i % 10 === 0) {
continue;
}
if (isSpecial(i)) {
break;
}
// statements
}
// Clumpy Equivalent:
clumpy.for_loop(
function () { i = 0; },
function () { return i < 100000; },
function () { i++; },
function () {
if (i % 10 === 0) {
clumpy.continue_loop();
return;
}
if (isSpecial(i)) {
clumpy.break_loop();
return;
}
// statements
}
);
This is where there’s the greatest likelihood of error. Notice the return;
after the clumpy.continue_loop();
statement. This is because if we don’t explicitly leave the function, JavaScript will continue to execute the rest of it.
I’ve found that a good pattern to follow is to put the return
before the method invocation in the same statement (returning the result) instead of after it in a separate statement:
var i;
return clumpy.
for_loop(
function () { i = 0; },
function () { return i < 100000; },
function () { i++; },
function () {
if (i % 10 === 0) {
return clumpy.
continue_loop();
}
if (isSpecial(i)) {
return clumpy.
break_loop();
}
// statements
}
).
once(function () {
// etc.
});