Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
Напишите рекурсивную функцию isEven согласно этим правилам. Она должна принимать число и возвращать булевское значение.
function isEven(num){
if(num == 0) return true;
if(num == 1) return false;
return isEven(num - 2 * (num > 0 ? 1 : -1));
}Test it on 50 and 75. See how it behaves on -1. Why? Can you think of a way to fix this?
Такой код работает, хотя функция объявляется ниже того кода, который её использует. Это происходит оттого, что объявления функций не являются частью обычного исполнения программ сверху вниз. Они «перемещаются» наверх их области видимости и могут быть вызваны в любом коде в этой области. Иногда это удобно, потому что вы можете писать код в таком порядке, который выглядит наиболее осмысленно, не беспокоясь по поводу необходимости определять все функции выше того места, где они используются.
function name(...){...}, если мы делаем var name = function(...){...} — мы просто создаём переменную, содержащую функцию, а переменная не всплывает. А можно ещё и так: var func1 = function func2(){} — тогда func2 всплывёт, а func1 — нет.
Выразительный JavaScript: Функции