Флаги в функциях JavaScript

Пусть у нас есть код, проверяющий число на простоту:

let num = 31; let flag = true; for (let i = 2; i < num; i++) { if (num % i == 0) { flag = false; break; } } console.log(flag);

Давайте оформим этот код в виде функции:

function isPrime(num) { let flag = true; for (let i = 2; i < num; i++) { if (num % i == 0) { flag = false; break; } } return flag; }

Проверим работу нашей функции:

console.log( isPrime(10) ); console.log( isPrime(31) );

Давайте теперь посмотрим, как можно упростить работу с флагами, если мы используем их в функции.

На самом деле в случае с функцией переменная flag и команда break нам не понадобятся - вместо них все сделает команда return.

Делается это следующим образом: внутри функции запускаем наш цикл с ифом и, если мы попали в иф - делаем return false, тем самым выходя из цикла и из функции. А если цикл прокрутился, но выхода из функции не случилось - после цикла делаем return true:

function isPrime(num) { for (let i = 2; i < num; i++) { if (num % i == 0) { return false; } } return true; }

Еще раз как это работает: если в массиве найдется нужный элемент - мы выйдем из функции (и из цикла тоже) с помощью return. Но если в массиве не найдется нужный элемент - выхода из функции не произойдет и выполнение дойдет до команды return false. И получится, что функция вернет true в знак того, что число простое.

Проверка по массиву

Давайте теперь сделаем функцию, которая параметром будет принимать массив, и проверять, что все элементы в этом массиве положительные.

Пусть функция возвращает true, если это так, и false, если хотя бы один из элементов массива отрицательный.

Вот примеры того, как должна работать наша функция:

console.log( isPositive([1, -2, 3, 4, -5]) ); // выведет false console.log( isPositive([1, 2, 3, 4, 5]) ); // выведет true

Реализуем описанную функцию с помощью неявного использования флагов:

function isPositive(arr) { for (let elem of arr) { if (elem < 0) { return false; } } return true; }

Сделайте функцию, которая параметром будет принимать массив с числами, и проверять, что все элементы в этом массиве являются четными числами.

Сделайте функцию, которая параметром будет принимать число и проверять, что все цифры это числа являются нечетными.

Сделайте функцию, которая параметром будет принимать массив и проверять, есть ли в этом массиве два одинаковых элемента подряд.