Javascript loops

From wikinotes
Revision as of 17:22, 18 December 2022 by Will (talk | contribs) (→‎for of loops)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

keywords

use break to exit a loop early.

break     // exit loop early
continue  // skip to next iteration

for loops

// initializer; exit-condition; each-loop
for (let i = 0; i < 100; i++) {
    // ...
}

for of loops

Assign var for each item in array.

for (i of my_array) {
    console.log(my_array[i])
}

for in loops

Assign var for each index in enumerable.

for (let item in my_enumerable) {
    console.log(item)
}

while loops

while (var < 100) {
    // ...
}
// execute once, regardless of whether var < 100
do {
    // ...
} while (var < 100)

loop labels

Assign a name to a loop lets you break or continue a specific outer loop.

less_than_two_hundred:
while (var < 200) {
    while (var < 100) {
        if (var > 150) {
            break less_than_two_hundred;
        }
    }
}
less_than_two_hundred:
while (var < 200) {
    while (var < 100) {
        if (var % 2) {
            continue less_than_two_hundred;
        }
    }
}

tail call optimization

When recursing in javascript, you should return with the function,
rather than recursing and returning a result.

safe

function retry(operation, retries_left = 0) {
    if (retries_left > 0) {
        if (!(operation)) {
            return retry(operation, retries_left - 1)    // <-- safe! directly returns function call
        }
    }
    return false
}

not safe!

function retry(operation, retries_left = 0) {
    if (retries_left > 0) {
        if (!(operation)) {
            result = retry(operation, retries_left - 1)
            return result                                // <-- not safe! calls recursed function, then returns result
        }
    }
    return false
}