На этой неделе я просматривал что-то старое и узнавал что-то новое, и я решил собрать их вместе в сообщении в блоге, чтобы они могли узнать друг друга, а вы могли познакомиться с ними.

Рекурсия

Рекурсия — мой новый друг на этой неделе, и мы все еще привыкаем друг к другу. Ладно, в основном я к ней привыкаю.

Рекурсия вызывает функцию, определение которой вы все еще находитесь в процессе. Ниже приведен пример, который принимает число n и строку текста и выводит их на консоль n раз.

function repeatLine (n, theLine) {
console.log(theLine);
if (n > 1) {
repeatLine(n - 1, theLine);
}
}

Во-первых, строка записывается один раз перед выполнением условия if. Затем, если n больше единицы, функция, определенная до этой точки, вызывается с уменьшением n. Это означает, что theLine регистрируется через консоль. Этот вызов будет повторяться до тех пор, пока n не станет больше единицы. Если вы вызываете функцию с числом, введенным как 5, и строкой как «whosits и whatsits galore», вы должны увидеть следующее в своей консоли.

As in:

Напоминание о функции ввода

Если вы только начинаете работать с JavaScript, следует помнить, что порядок ввода имеет значение. Например, если бы вы вызвали функцию с обратным порядком ввода, например так:

repeatLine("whosits and whatsitsgalore", 5)

тогда номер 5 был бы зарегистрирован в консоли один раз. Если вы проверите тип данных в консоли, добавив console.log в функцию для типа данных, например

function repeatLine (n, theLine) {
console.log(theLine);
console.log(typeof theLine);
if (n > 1) {
repeatLine(n - 1, theLine);
}
}

вы увидите, что тип данных 5, который регистрируется, — «число». Тип входных данных не определяется функцией, поэтому она будет регистрировать строку независимо от ее типа и не будет принуждать ее к другому типу. Он не решит произвольно преобразовать число 5 в строку. Но он также не будет знать, что вы хотели, чтобы ввод, который является строкой, был распечатан.

Почему функция вообще что-то записывает? Перед оператором if создается console.log, поэтому строка, какой бы она ни была, будет напечатана хотя бы один раз. Поскольку значением n является строка, и вы не можете сравнить строку с числом, оператор if не запускается. Вот что я получаю при попытке сравнить строку с числом в консоли.

Если мы спросим, ​​меньше ли переменная единицы, используя оператор «меньше чем», ответ будет «ложным». Если мы спросим, ​​больше ли переменная единицы, то ответ тоже «ложь». Если вы используете операторы == и === для сравнения фразы с 1, она также будет ложной.

На мой взгляд, это пример того, как в коде, как и в жизни, не все сводится к числам.

Обзор конструкторов классов

Это старый друг, о котором я давно не думал, но который был рядом все это время.

При создании приложений с помощью React часть работы по написанию кода абстрагируется, и я понял, что сейчас самое время просмотреть Class and Inheritance, чтобы напомнить себе о том, что я считал само собой разумеющимся.

При использовании текущей версии React мне не нужно было использовать конструктор, поэтому это базовый обзор того, что делает конструктор. Ниже приведен пример класса Frog.

class Frog {
constructor (name, from, into) {
this.name = name;
this.from = from;
this.into = into;
}
}

Любой экземпляр класса Frog должен быть инициализирован именем и значением атрибутов «откуда» и «в». «Это», как оно появляется в конструкторе, относится к экземпляру лягушки, который создается или был создан.

Например, ниже показан новый экземпляр создаваемой лягушки:

«Новый» сигнализирует о том, что будет создан новый объект, являющийся экземпляром класса. После этого следует название класса, в данном случае «Лягушка». Затем нам нужно включить входные данные между круглыми скобками, чтобы указать значение для атрибутов name, from и into. Результат вышеописанного следующий, новая лягушка!

Это означает, что если я наберу

Kermit.from

в консоль в этот момент должно вернуться «лягушка».

Собираемся вместе

Поскольку иногда приятно иметь счастливый конец истории, давайте объединим вышеуказанные концепции.

В консоли, если вы вызовете RepeatLine (вторая версия, которая также дает нам тип данных того, что регистрируется) со следующим вводом

repeatLine(5, Kermit.from)

вы должны получить в качестве вывода

Что напоминает мне лягушку, прыгающую через скакалку.

Пожалуйста.