Исходный код
if (result == true)
return true;
else
return result;Что не так в этом коде
Если у тебя есть переменная булева типа, то нет необходимости её сравнивать с истиной или ложью, можно напрямую передавать её в оператор if. Вместо if (result == true) пишем просто if (result).
Если у тебя переменная какого-то другого типа, то следует пользоваться правилами неявного преобразования значений произвольного типа в булевы. Например, часто 0 и пустая строка эквивалентны значению «ложь».
Второй момент — что вовзращаем оператором return. Исходный код построен так, что при истинном значении переменной возвращается «истина», а при ложном — «ложь». То же самое можно выразить существенно короче:
return result;На случай, если в переменной result присутствует значение не булева типа, а из функции необходимо возвратить именно булево значение, то следует пользоваться «двойным отрицанием»:
return !!result;Благодаря такому финту выполнится явное преобразование значение произвольного типа к значению булева типа.