Учтите, что конструкция if куда более гибкая на JASS:
Итак, эта конструкция может быть почти любой, это стоит учитывать.
О циклах добавлю, что в директиве exitwhen boolean, значение может быть получено из любого выражения, к примеру:
В этом цикле при исполнении директивы exitwhen сначала будет проверенно значение переменной i, если она равна 12 произойдет выход из цикла, если же она не равна 12 будет вызвана функция GerRandomInt (получить любое целочисленное число от 0 до 99), если это число - 0 произойдет выход из цикла, если же это число не будет равно 0 то будет проверенна переменная u, если ее значение не равно null, и значение y больше двух и значение x меньше или равно 2.12 то произойдет выход из цикла, иначе произойдет прыжок к метке loop.
Вообще это очень важно правило при вычислении значений переменных типа bollean, к примеру if A() and B()then, если A вернет false то B вызвана не будет, и алогично if A() or B()then, тут если A вернет true то B вызвана не будет.
Теоретически также цикл может содержать несколько exitwhen, но на практике это применяется редко.