Найти в Дзене
Рекурсия/Рекурсивный процесс и итеративный процесс
Рекурсия vs. какой-то процесс Давайте для начала явно отметим отличие рекурсии (в общем смысле) от процесса. Эти понятия никак не связаны. Рекурсия — просто абстрактная концепция, которую можно наблюдать в природе, которая используется в математике и в других областях. Такая же абстрактная, как, например, музыкальная гармония. Теперь на секунду забудем про рекурсию, и просто подумаем про компьютеры. Для выполнения задач компьютерам нужны инструкции. Когда компьютер выполняет набор инструкций — это процесс...
5 лет назад
JavaScript/Замыкание
Возможность использовать вызовы функций как переменные вкупе с тем фактом, что локальные переменные каждый раз при вызове функции создаются заново, приводит нас к интересному вопросу. Что происходит с локальными переменными, когда функция перестаёт работать? Следующий пример иллюстрирует этот вопрос. В нём объявляется функция wrapValue, которая создаёт локальную переменную. Затем она возвращает функцию, которая читает эту локальную переменную и возвращает её значение. function wrapValue(n) { ...
5 лет назад
JavaScript/Стек вызовов
Будет полезно взглянуть на то, как порядок выполнения работает с функциями. Вот простая программа с несколькими вызовами функций: function greet(who) { console.log("Привет, " + who); } greet("Семен"); console.log("Покеда"); Обрабатывается она примерно так: вызов greet заставляет проход прыгнуть на начало функции. Он вызывает встроенную функцию console.log, которая перехватывает контроль, делает своё дело и возвращает контроль. Потом он доходит до конца greet, и возвращается к месту, откуда его вызвали...
5 лет назад
JavaScript/Короткое вычисление логических операторов
Логические операторы && и || работают с величинами разных типов очень странным образом. Они преобразуют величину с левой стороны оператора в булевскую, чтобы понять, что делать дальше, но в зависимости от оператора и от результата этого преобразования, возвращают оригинальное значение либо левой, либо правой части. К примеру, || вернёт значение с левой части, когда его можно преобразовать в true – а иначе вернёт правую часть. console.log(null || "user") // → user console.log("Karl" || "user") // → Karl Такая работа оператора || позволяет использовать его как откат к значению по умолчанию...
5 лет назад
JavaScript/Автоматическое преобразование типов
JavaScript позволяет выполнять любые, подчас очень странные инструкции. К примеру: console.log(8 * null) // → 0 console.log("5" - 1) // → 4 console.log("5" + 1) // → 51 console.log("пять" * 2) // → NaN console.log (false == 0) // → true Когда оператор применяется «не к тому» типу величин, JavaScript втихую преобразовывает величину к нужному типу, используя набор правил, которые не всегда соответствуют вашим ожиданиям. Это называется приведением типов (coercion). В первом выражении null превращается в 0, а “5” становится 5 (из строки – в число)...
5 лет назад
Если нравится — подпишитесь
Так вы не пропустите новые публикации этого канала