Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Breaking out of JavaScript 'For' Loop using False?

I didn't know this was possible (is it?)

The below code apparently logs values 1 to 5, then breaks out of the 'for' loop, because the 'false' value is returned.

function x() {
    for (var i = 0; i < 10; i++) {
        console.log(i);
        if (i == 5) return false;
    }
    return true
}

console.log(x());

My question is:

  • How come the for loop short-circuits when 'false' is returned? I looked at MDN but there is nothing there about using 'false' to break out of the for loop. Also tried looking at ECMA specs, but sadly too noob.

  • Why doesn't the function return 'true' to the console, as the 'return true' statement exists after the 'for' loop is executed? Even if false somehow returns 'first', shouldn't 'true' return last or also?

like image 735
Molly Thama Avatar asked Nov 16 '25 05:11

Molly Thama


2 Answers

return false is not breaking your loop but returning control outside back.

function x() {
    for (var i = 0; i < 10; i++) {
        console.log(i);
        if (i == 5) return false;
    }
    return true
}

console.log(x())

Output:

0
1
2
3
4
5
false //here returning false and control also 

Where break will break your loop instead of coming out from function.

function x() {
    for (var i = 0; i < 10; i++) {
        console.log(i);
        if (i == 5) break;
    }
    return true
}

console.log(x())

Will output:

0
1
2
3
4
5 //after this loop is breaking and ouputing true
true 
like image 149
Manwal Avatar answered Nov 18 '25 21:11

Manwal


The return statement ends the function , so the return true line is unreachable. Hope that helps.

like image 32
OliverRadini Avatar answered Nov 18 '25 20:11

OliverRadini



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!