# How does Loop Breaking work?

Hi, I have been trying to learn loop breaking i kinda get but not 100% BUT I still get a little confused.

1 Like

The break keyword breaks the innermost loop. I believe this is what you mean, if not please tell me. Because breaking is pretty self explanatory

Example

``````while true do
while true do
print("Innermost loop broken!")
break
end
print("Outermost loop not broken!")
end
``````
4 Likes

Yeah, thatâ€™s it also why did you use 2 while do loops?

He used 2 while do loops in order to show you that if you use break, it will break the second loop and not the first, so in his case:

It will print â€śInnermost loop broken!â€ť once, and since he breaks it, it will print â€śOutermost loop not broken!â€ť
continuously

2 Likes

Oh ok thanks, Have a great day!

IF you want to break the entire loop, do something like this:

``````local breakCondition = false

while true do
while true do
print("Breaking the inner loop!")
breakCondition = true
end

if breakCondition then
print("Breaking the outer loop!")
break
end
end``````
2 Likes

What break does is skip to the end of the loop/exit the loop the break is in (the innermost loop).
Ex:

``````while true do
while true do
break -- 1
end
-- 1 That break will skip here
break -- 2
end
-- 2 will skip here
``````
1 Like

That checks if the variable isnâ€™t equal to `nil` - what youâ€™re looking for is

` if breakCondition == true then`

or set

to nil.

1 Like

Nope, it passes if the value is truthy (i.e., not false or nil). Comparing to a boolean is even worse practice, since itâ€™s already a boolean. marfitâ€™s code doesnâ€™t even work anyways since the nested while loop prevents the if branch from executing

1 Like

The if statement will never be reached because the inner while loop does not terminate. I get itâ€™s for the sake of demonstration but this exampleâ€™s sort of strange, especially considering youâ€™re not using the conditional of the while loop when it could be used in all cases.

``````local breakCondition = false

while (true) do -- Non-terminating
while (breakCondition == false) do
breakCondition = true
end

if (breakCondition) then -- Not falsy
break -- Can just use the conditional though
end
end
``````
2 Likes