CodeRoll | Frontend
4.46K subscribers
1.7K photos
74 videos
1 file
1.02K links
OZ — Лучшее для разработчика и дизайнера / IT инструменты, курсы и книги
— Веб-разработка на JS, HTML, CSS, React, Vue,Angular

Купить рекламу: https://telega.in/c/coderoll

Чат: https://xn--r1a.website/coderoll_chat

По всем вопросам пишите сюда - @yankovsky_ads
Download Telegram
👩‍💻👩‍💻 Как выглядит алгоритм экспотенциального поиска на JavaScript?

Экспоненциальный поиск позволяет выполнять поиск по отсортированному неограниченному списку для указанного входного значения (поисковый «ключ»)

Алгоритм состоит из двух этапов. Первый этап определяет диапазон, в котором ключ поиска находился бы, если бы он был в списке. На втором этапе выполняется бинарный поиск по этому диапазону

❗️ В нашем примере binarySearchIterative - это функция бинарного поиска, про который мы уже писали раньше


export const exponentialSearch = (
array: number[],
x: number
): number | null => {
const arrayLength = array.length
if (arrayLength === 0) return null

if (array[0] === x) return 0

let i = 1
while (i < arrayLength && array[i] <= x) {
i = i * 2
}

const start = Math.floor(i / 2)
const end = Math.min(i, arrayLength - 1)
const result = binarySearchIterative(array, x, start, end)

return result
}


Coderoll | Frontend
Please open Telegram to view this post
VIEW IN TELEGRAM
Используем принципы “Чистого кода” в контексте JavaScript.

Функции


❗️ Не создавайте глобальные функции, которые могут создать конфликт с аналогичными функциями сторонних библиотек

Давайте разберем на примере: что, если вы хотите расширить собственный метод JavaScript Array, чтобы иметь метод diff, который мог бы показать разницу между двумя массивами?


Вы можете написать свою новую функцию в Array.prototype, но она может конфликтовать с другой библиотекой, которая попытается сделать то же самое

Что, если эта другая библиотека просто использует diff, чтобы найти разницу между первым и последним элементами массива?

Вот почему было бы гораздо лучше просто использовать классы ES2015/ES6 и просто расширить глобальный Array.

Coderoll | Frontend
⚡️Перечислите хотя бы 4 метода HTTP

Ответ:
GET, POST, PUT, DELETE

Ставь ❤️ если знаешь ответ
Если нет — ставь 💅

Coderoll | Frontend
Please open Telegram to view this post
VIEW IN TELEGRAM
8
Что такое Callback Hell?

Ответ:
Callback Hell — это ситуация, когда код становится трудно читаемым и поддерживаемым из-за глубокой вложенности коллбэков. Это часто происходит при работе с асинхронными операциями. Проблему можно решить с помощью Promises или Async/Await.

Ставь ❤️ если знаешь ответ
Если нет — ставь 💅

Coderoll | Frontend
💅42
Что такое Event Loop и как он работает?

Ответ:
Event Loop — это механизм, который управляет потоком выполнения кода в JavaScript, обеспечивая асинхронность. Он проверяет Call Stack и очереди задач (например, микрозадачи и макрозадачи) и выполняет их в нужном порядке.

Ставь ❤️ если знаешь ответ
Если нет — ставь 💅

Coderoll | Frontend
💅32
Что такое Object.defineProperty?

Ответ:
Object.defineProperty позволяет определить новое свойство в объекте или изменить существующее, с указанием его настроек (например, enumerable, writable, configurable).

Ставь ❤️ если знаешь ответ
Если нет — ставь 💅

Coderoll | Frontend
💅1
👩‍💻👩‍💻 Как выглядит алгоритм гномьей сортировки на JavaScript?

Алгоритм находит первое место, где два соседних элемента стоят в неправильном порядке и меняет их местами



const gnomeSort = (arr: number[]): number[] => {
if (arr.length <= 1) {
return arr
}

let i: number = 1

while (i < arr.length) {
if (arr[i - 1] <= arr[i]) {
i++ //increment index if sub-array[0:i] already sorted
} else {
;[arr[i], arr[i - 1]] = [arr[i - 1], arr[i]] //swapping two numbers
i = Math.max(1, i - 1) //go back to the previous index to check the swapped number
}
}
return arr
}


Coderoll | Frontend
Please open Telegram to view this post
VIEW IN TELEGRAM
Что делает Object.freeze?

Object.freeze замораживает объект, т.е нельзя добавить, удалить или изменить свойства

Подходит для защиты конфигураций и констант.

Ставь ❤️ если знаешь ответ
Если нет — ставь 💅

Coderoll | Frontend
1
Что такое Proxy в JavaScript?

Ответ:
Proxy — это объект, который позволяет перехватывать операции (например, чтение свойств, установку значений, вызов функций) над другим объектом. Это используется для мониторинга, валидации или изменения поведения объекта.

Ставь ❤️ если знаешь ответ
Если нет — ставь 💅

Coderoll | Frontend
💅1
Какие методы массива являются мутирующими?

Ответ:
Мутирующими называются методы, которые изменяют исходный массив. К таким методам относятся:

push() — добавляет элемент в конец массива.
pop() — удаляет последний элемент массива.
shift() — удаляет первый элемент массива.
unshift() — добавляет элемент в начало массива.
splice() — добавляет/удаляет элементы в любом месте массива.
sort() — сортирует элементы массива.
reverse() — меняет порядок элементов на противоположный.


Ставь ❤️ если знаешь ответ
Если нет — ставь 💅

Coderoll | Frontend
💅1
Используем принципы “Чистого кода” в контексте JavaScript. Часть 2

Функции


Аргументы функции - в идеале их должно быть 2 или меньше

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

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

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

Чтобы сделать очевидным, какие свойства ожидает функция, вы можете использовать синтаксис деструктуризации ES2015/ES6

Coderoll | Frontend
Что отличает умного айтишника от глупого? Нет, не знание десятка языков и фреймворков. И даже не многолетний опыт работы. 

Умного от тупого отличает понимание одной фундаментальной вещи — важно не СКОЛЬКО ты умеешь, а ЧТО.

И те, кто понял это раньше — уже обходят 90% матёрых спецов. Потому что точечно учат ровно то, что требуется рынку прямо сейчас.

Если хотите показать, кто тут батя и быстро войти в списки лучших — почитайте канал @devsp. Там LLM разработчик делится ценнейшим опытом и рассказывает, как в пару месяцев упаковать 5–6 лет хаотичного обучения.

Это однозначно один из лучших айтишных каналов, посмотрите сами: @devsp
Что выведет этот код?
Что выведет этот код?
👩‍💻 Используем принципы “Чистого кода” в контексте JavaScript

Функции


Инкапсулируйте условные операторы

Простыми словами, старайтесь ваши условия заключить в определенный функционал - метод или функцию. Таким образом вы сможете:

💫 переиспользовать логику условия
💫 легко по названию функции/метода понимать что тут происходит
💫 сделать код намного более читаемым (особенно в сложных условиях)

Coderoll | Frontend
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Что выведет этот код?
👩‍💻 Используем принципы “Чистого кода” в контексте JavaScript

Функции


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

⚠️ Так же это одно из правил иммутабельности, которое важно соблюдать при работе с продвинутыми инструментами

Если у вас есть необходимость изменить объект, то почти всегда надежнее будет создать его копию, и уже в ней проводить мутации

Сейчас это можно делать за счет object spread operator (...obj) или по старинке через Object.assign()

Coderoll | Frontend
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Что выведет этот код?