ar
Feedback
Frontend | Вопросы собесов

Frontend | Вопросы собесов

الذهاب إلى القناة على Telegram

📈 نظرة تحليلية على قناة تيليجرام Frontend | Вопросы собесов

تُعد قناة Frontend | Вопросы собесов (@easy_javascript_ru) في القطاع اللغوي الروسية لاعباً نشطاً. يضم المجتمع حالياً 18 269 مشتركاً، محتلاً المرتبة 7 325 في فئة التكنولوجيات والتطبيقات والمرتبة 36 895 في منطقة روسيا.

📊 مؤشرات الجمهور والحراك

منذ تأسيسه في невідомо، حقق المشروع نمواً سريعاً وجمع 18 269 مشتركاً.

بحسب آخر البيانات بتاريخ 19 يونيو, 2026، تحافظ القناة على نشاط مستقر. خلال آخر 30 يوماً تغيّر عدد الأعضاء بمقدار -128، وفي آخر 24 ساعة بمقدار 1، مع بقاء الوصول العام مرتفعاً.

  • حالة التحقق: غير موثّقة
  • معدل التفاعل (ER): يبلغ متوسط تفاعل الجمهور 9.80‎%. وخلال أول 24 ساعة من النشر يحصد المحتوى عادةً 5.48‎% من ردود الفعل نسبةً إلى إجمالي المشتركين.
  • وصول المنشورات: يحصل كل منشور على متوسط 1 790 مشاهدة. وخلال اليوم الأول يجمع عادةً 1 002 مشاهدة.
  • التفاعلات والاستجابة: يتفاعل الجمهور بانتظام؛ متوسط التفاعلات لكل منشور يبلغ 9.
  • الاهتمامات الموضوعية: يركز المحتوى على مواضيع رئيسية مثل ставь, браузер, html, border, flex.

📝 الوصف وسياسة المحتوى

يصف المؤلف القناة بأنها مساحة للتعبير عن الآراء الذاتية:
Сайт easyoffer.ru Реклама @easyoffer_adv ВП @easyoffer_vp Тесты t.me/+T0COHtFzCJkwMDUy Задачи t.me/+_tcX2w2EmvdmMTgy Вакансии t.me/+CgCAzIyGHHg0Nzky

بفضل وتيرة التحديث المرتفعة (أحدث البيانات بتاريخ 20 يونيو, 2026) تحافظ القناة على حداثتها ومستوى وصول مرتفع. وتُظهر التحليلات تفاعلاً نشطاً من الجمهور، ما يجعلها نقطة تأثير مهمة ضمن فئة التكنولوجيات والتطبيقات.

18 269
المشتركون
+124 ساعات
-247 أيام
-12830 أيام
أرشيف المشاركات
Назови отличия директив v show и v if ? Спросят с вероятностью 7% v-show и v-if — это две директивы, которые используются для условного отображения элементов в DOM. Однако они работают по-разному и имеют разные случаи использования. Рассмотрим их отличия более детально. Основные отличия 1️⃣Рендеринг в DOM:v-if: Элемент с v-if рендерится в DOM только тогда, когда условие истинно. Если условие ложно, элемент не создаётся и удаляется из DOM. ✅v-show: Элемент с v-show всегда рендерится в DOM, независимо от условия. Однако, его видимость контролируется с помощью CSS-свойства display. 2️⃣Переключение состояния:v-if: Переключение между состояниями приводит к созданию или уничтожению элемента в DOM. Это может быть медленнее при частом переключении, так как каждый раз происходит перерисовка. ✅v-show: Переключение состояния происходит мгновенно, поскольку элемент уже присутствует в DOM, и меняется только его CSS-свойство display. 3️⃣Использование в условиях:v-if: Рекомендуется использовать, когда элемент должен быть условно добавлен или удален из DOM. Полезно, когда условие меняется редко. ✅v-show: Рекомендуется использовать, когда необходимо часто переключать видимость элемента, поскольку это более производительно. Примеры: С v-if:
<template>
  <div>
    <button @click="toggle">Toggle</button>
    <p v-if="isVisible">Этот текст отображается только если isVisible истинно</p>
  </div>
</template>

<script>
export default {
  data() {
    return {
      isVisible: true
    };
  },
  methods: {
    toggle() {
      this.isVisible = !this.isVisible;
    }
  }
};
</script>
В этом примере элемент <p> будет добавляться или удаляться из DOM при каждом нажатии на кнопку. С v-show:
<template>
  <div>
    <button @click="toggle">Toggle</button>
    <p v-show="isVisible">Этот текст всегда присутствует в DOM, но может быть скрыт</p>
  </div>
</template>

<script>
export default {
  data() {
    return {
      isVisible: true
    };
  },
  methods: {
    toggle() {
      this.isVisible = !this.isVisible;
    }
  }
};
</script>
В этом примере элемент <p> всегда присутствует в DOM, но его видимость контролируется с помощью CSS. ✅v-if: Условное добавление и удаление элементов в DOM. ✅v-show: Условное изменение видимости элементов с помощью CSS. 👉 Можно посмотреть Примеры как отвечают люди на этот вопрос, или перейти К списку 1429 вопроса на Frontend разработчика. Ставь 👍 если нравится контент 🔐 База собесов | 🔐 База тестовых

Как добавить слушатель события ? Спросят с вероятностью 7% Добавление слушателя события — это важный аспект работы с веб-приложениями, так как позволяет реагировать на действия пользователя, такие как клики, ввод текста, прокрутка и другие. В современных фреймворках и библиотеке JavaScript есть несколько способов добавить слушатели событий. Почему это нужно? Слушатели событий позволяют интерактивно реагировать на действия пользователей, делая приложения динамичными и отзывчивыми. Например, при клике на кнопку можно вызвать определенную функцию, при вводе текста в поле — обновить состояние и так далее. Как это используется? Рассмотрим три основных подхода к добавлению слушателей событий: в чистом JavaScript, в React и с использованием jQuery. 1️⃣Чистый JavaScript Для добавления слушателя события используется метод addEventListener. Пример:
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Event Listener Example</title>
</head>
<body>
  <button id="myButton">Click me</button>

  <script>
    const button = document.getElementById('myButton');
    
    button.addEventListener('click', () => {
      alert('Button was clicked!');
    });
  </script>
</body>
</html>
В этом примере мы получаем элемент кнопки по её id и добавляем слушатель события click, который вызывает функцию, отображающую сообщение. 2️⃣React Обработчики событий добавляются непосредственно к JSX-элементам с использованием специальных атрибутов, таких как onClick, onChange и т.д. Пример:
import React from 'react';

function App() {
  const handleClick = () => {
    alert('Button was clicked!');
  };

  return (
    <div>
      <button onClick={handleClick}>Click me</button>
    </div>
  );
}

export default App;
В этом примере мы определяем функцию handleClick и передаем её в атрибут onClick кнопки. Когда пользователь нажимает на кнопку, вызывается функция handleClick. 3️⃣jQuery Если вы используете его, добавление слушателей событий также очень просто и удобно. Пример:
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Event Listener Example</title>
  <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
</head>
<body>
  <button id="myButton">Click me</button>

  <script>
    $(document).ready(function() {
      $('#myButton').on('click', function() {
        alert('Button was clicked!');
      });
    });
  </script>
</body>
</html>
В этом примере мы используем jQuery для добавления обработчика события click к кнопке. Почему это удобно и важно:Интерактивность: Позволяет создавать динамичные и отзывчивые интерфейсы. ✅Гибкость: Возможность реагировать на различные действия пользователей. ✅Удобство: В каждом подходе (чистый JavaScript, React, jQuery) есть свои удобства и особенности, которые помогают решать задачи более эффективно. Добавление слушателя события позволяет реагировать на действия пользователя и делает приложения интерактивными. В зависимости от технологии (чистый JavaScript, React или jQuery) процесс добавления слушателя может немного отличаться, но цель остается той же — улучшить взаимодействие пользователя с приложением. 👉 Можно посмотреть Примеры как отвечают люди на этот вопрос, или перейти К списку 1429 вопроса на Frontend разработчика. Ставь 👍 если нравится контент 🔐 База собесов | 🔐 База тестовых

📌 Составили список лучших каналов от действующих разработчиков: Frontend Developer — советы и практики от действующего Senio
📌 Составили список лучших каналов от действующих разработчиков: Frontend Developer — советы и практики от действующего Senior-разработчика Python Developer — готовый код и полезные ресурсы для любого питониста Java Developer — секреты и тонкости программирования на Java

Как изменяется контекст this в JavaScript при использовании стрелочной функции вместо обычной функции?
Anonymous voting

Хватит терять время на уже готовый код! Frontend Trends — библиотека фронтендера, где собраны готовые CodePen решения для ежедневных задач. Эффекты при наведении, 3D-анимации, готовые карточки и др. Зашли – сохранили – применили в своём проекте. Пользуйтесь: @trends_frontend

Как отрисовать компоненты на основе массива ? Спросят с вероятностью 7% В современных фреймворках, таких как React, отрисовка компонентов на основе массива данных — это стандартная задача. Она позволяет динамически создавать элементы интерфейса на основе данных, что делает код более гибким и адаптируемым к изменениям. Почему это нужно? Отрисовка компонентов на основе массива данных позволяет: ✅Динамически создавать и отображать элементы интерфейса. ✅Управлять отображением элементов на основе данных (например, список задач, карточки пользователей и т.д.). ✅Избегать дублирования кода, создавая компоненты в цикле. Как это используется? Для этого обычно используется метод массива .map(), который перебирает массив данных и возвращает новый массив с JSX-элементами. Пример: 1️⃣Подготовка данных: Предположим, у нас есть массив объектов с данными пользователей:
const users = [
  { id: 1, name: 'Иван', age: 30 },
  { id: 2, name: 'Мария', age: 25 },
  { id: 3, name: 'Петр', age: 40 },
];
2️⃣Создание компонента для отрисовки каждого пользователя: Создадим компонент User, который принимает данные пользователя через props:
function User({ name, age }) {
  return (
    <div>
      <h2>{name}</h2>
      <p>Возраст: {age}</p>
    </div>
  );
}
3️⃣Отрисовка списка пользователей: Используем метод .map() для создания списка компонентов User на основе массива users:
function UserList({ users }) {
  return (
    <div>
      {users.map(user => (
        <User key={user.id} name={user.name} age={user.age} />
      ))}
    </div>
  );
}
Здесь важно использовать уникальный key для каждого элемента списка, чтобы React мог оптимально управлять рендерингом этих элементов. 4️⃣Использование в основном компоненте: Наконец, используем компонент UserList в основном компоненте приложения:
function App() {
  return (
    <div>
      <h1>Список пользователей</h1>
      <UserList users={users} />
    </div>
  );
}

export default App;
Почему это удобно и важно:Динамичность: Мы можем легко изменить массив users, и наш интерфейс автоматически обновится. ✅Читаемость: Код становится более структурированным и легче поддерживается. ✅Оптимизация: Использование ключей позволяет React эффективно обновлять элементы, минимизируя количество изменений в DOM. Отрисовка компонентов на основе массива данных позволяет динамически создавать элементы интерфейса и улучшает читаемость и поддержку кода. 👉 Можно посмотреть Примеры как отвечают люди на этот вопрос, или перейти К списку 1429 вопроса на Frontend разработчика. Ставь 👍 если нравится контент 🔐 База собесов | 🔐 База тестовых

Все надоело и пропал интерес, чувствуешь себя амебой и хочется только залипать в телефоне. Бывает? Психолог взрослого человек
Все надоело и пропал интерес, чувствуешь себя амебой и хочется только залипать в телефоне. Бывает? Психолог взрослого человека - канал для айтишников, у которых периодически опускаются руки и отключается мозг, ибо переработки и постоянная тревожность не приводят к другим исходам. ▪️ Как научиться отвлекаться от работы и отдыхать? ▪️ Как совместить кучу рабочих задач и время с семьей? ▪️ Как справиться с прокрастинацией? ▪️ Как не растерять запал, даже если начальник и коллеги 💩 и кажется, что ничего не выходит? Подписывайтесь на канал @vadimpetrov_psy и научитесь работать без упахивания, выгорания и ущерба для личной жизни! 👨🏻‍💻 Псс. Заходите в закреп канала - там много полезного.

В JavaScript, что происходит, если метод или свойство не найдено в объекте, но есть в его прототипе?
Anonymous voting

Что такое интерполяция ? Спросят с вероятностью 7% Интерполяция — это метод вставки значений или выражений в строки. Она позволяет динамически встраивать переменные и выражения в текстовые строки, делая их более гибкими и удобными для использования. Например, интерполяция достигается с помощью шаблонных строк. Почему это нужно? Упрощает работу с текстом, который должен включать значения переменных или результаты вычислений. Без интерполяции, программистам пришлось бы вручную конкатенировать строки и переменные, что делает код менее читаемым и более сложным в поддержке. Как это используется? Для примера возьмём JavaScript и его шаблонные строки. Шаблонные строки заключаются в обратные кавычки (``) и позволяют включать выражения внутри них с помощью конструкции ${}. Пример кода:
const name = 'Иван';
const age = 30;
const greeting = `Привет, меня зовут ${name} и мне ${age} лет.`;

console.log(greeting); // Вывод: Привет, меня зовут Иван и мне 30 лет.
В данном примере переменные name и age интерполируются в строку greeting. Как это работает и почему это удобно? ✅Читаемость: Шаблонные строки делают код более читабельным и понятным, так как видна вся строка целиком, без необходимости объединения отдельных частей. ✅Удобство: Позволяет легко включать значения переменных и результаты выражений в строку. ✅Избежание ошибок: Снижает вероятность ошибок, которые могут возникнуть при ручной конкатенации строк. Шаблонные строки также поддерживают выполнение выражений внутри интерполяции:
const a = 5;
const b = 10;
const result = Сумма ${a} и ${b} равна ${a + b}.;

console.log(result); // Вывод: Сумма 5 и 10 равна 15.
Интерполяция — это метод вставки значений и выражений в строки, который улучшает читаемость и удобство работы с текстом в коде. Например, это делается с помощью шаблонных строк и конструкции ${}. 👉 Можно посмотреть Примеры как отвечают люди на этот вопрос, или перейти К списку 1429 вопроса на Frontend разработчика. Ставь 👍 если нравится контент 🔐 База собесов | 🔐 База тестовых

Какой метод массива в JavaScript немедленно прерывает выполнение текущей операции и возвращает значение?
Anonymous voting

Что делает $emit ? Спросят с вероятностью 7% $emit — это метод, используемый для отправки событий из дочернего компонента в родительский компонент. Он позволяет дочернему компоненту уведомлять родительский компонент о том, что что-то произошло, передавая вместе с этим событием любые необходимые данные. Как его использовать 1️⃣В дочернем компоненте: ✅Используйте метод $emit, чтобы отправить событие. ✅Передайте имя события и любые данные, которые нужно передать родительскому компоненту. 2️⃣В родительском компоненте: ✅Слушайте это событие, используя директиву v-on или её сокращение @. ✅Обработайте событие в методе родительского компонента. Дочерний компонент (ChildComponent.vue)
<template>
  <button @click="notifyParent">Нажми меня</button>
</template>

<script>
export default {
  methods: {
    notifyParent() {
      this.$emit('childClicked', 'Данные от дочернего компонента');
    }
  }
}
</script>
Родительский компонент (ParentComponent.vue)
<template>
  <div>
    <h1>Родительский компонент</h1>
    <child-component @childClicked="handleChildClick"></child-component>
  </div>
</template>

<script>
import ChildComponent from './ChildComponent.vue';

export default {
  components: {
    ChildComponent
  },
  methods: {
    handleChildClick(message) {
      console.log('Событие от дочернего компонента:', message);
    }
  }
}
</script>
Пояснение 1️⃣В дочернем компоненте `ChildComponent`: ✅Мы создали кнопку и добавили к ней обработчик события @click, который вызывает метод notifyParent. ✅Метод notifyParent использует $emit для отправки события childClicked и передает строку 'Данные от дочернего компонента' в качестве данных. 2️⃣В родительском компоненте ParentComponent: ✅Мы добавили дочерний компонент <child-component> в шаблон и прослушиваем событие childClicked с помощью директивы @childClicked. ✅Когда событие childClicked происходит, вызывается метод handleChildClick, который принимает данные, переданные дочерним компонентом, и выводит их в консоль. Почему это важно?Коммуникация между компонентами: $emit позволяет организовать эффективную коммуникацию между компонентами, передавая данные и уведомления от дочернего компонента к родительскому. ✅Разделение обязанностей: С помощью событий можно поддерживать чистую и разделенную архитектуру, где каждый компонент отвечает только за свои задачи и уведомляет другие компоненты о произошедших изменениях через события. ✅Масштабируемость и поддерживаемость: Использование событий делает приложение более масштабируемым и поддерживаемым, так как компоненты остаются независимыми и могут повторно использоваться в разных частях приложения. $emit используется для отправки событий из дочернего компонента в родительский, позволяя передавать данные и уведомления о произошедших изменениях. 👉 Можно посмотреть Примеры как отвечают люди на этот вопрос, или перейти К списку 1429 вопроса на Frontend разработчика. Ставь 👍 если нравится контент 🔐 База собесов | 🔐 База тестовых

В чем заключается основное отличие между объявлениями переменных let и const в JavaScript?
Anonymous voting

Как передать данные из родительского компонента в дочерний ? Спросят с вероятностью 7% Передача данных из родительского компонента в дочерний компонент — это одна из основных задач в работе с компонентами в React. Это делается с помощью пропсов (props). Пропсы — это способ передачи данных и событий от родительского компонента к дочернему. Шаги для передачи данных из родительского компонента в дочерний 1️⃣Создание родительского компонента: ✅В родительском компоненте мы создаем состояние или просто определяем данные, которые хотим передать. ✅Затем передаем эти данные в дочерний компонент через пропсы. 2️⃣Приём данных в дочернем компоненте: ✅В дочернем компоненте мы получаем пропсы и используем их для отображения данных или выполнения других действий. Рассмотрим пример, где родительский компонент передает строку message в дочерний компонент. Родительский компонент (ParentComponent.js):
import React from 'react';
import ChildComponent from './ChildComponent';

function ParentComponent() {
    const message = "Привет, дочерний компонент!";
    
    return (
        <div>
            <h1>Родительский компонент</h1>
            <ChildComponent message={message} />
        </div>
    );
}

export default ParentComponent;
Дочерний компонент (ChildComponent.js):
import React from 'react';

function ChildComponent(props) {
    return (
        <div>
            <h2>Дочерний компонент</h2>
            <p>{props.message}</p>
        </div>
    );
}

export default ChildComponent;
Пояснение 1️⃣В родительском компоненте `ParentComponent`: ✅Создаем переменную message, содержащую строку "Привет, дочерний компонент!". ✅В JSX разметке мы рендерим дочерний компонент ChildComponent, передавая ему пропс message со значением переменной message. 2️⃣В дочернем компоненте ChildComponent: ✅Принимаем пропс message через параметр props. ✅Используем props.message для отображения переданной строки внутри тега <p>. Дополнительные примеры Родительский компонент (ParentComponent.js):
import React from 'react';
import ChildComponent from './ChildComponent';

function ParentComponent() {
    const user = {
        name: "Иван",
        age: 25
    };
    
    return (
        <div>
            <h1>Родительский компонент</h1>
            <ChildComponent user={user} />
        </div>
    );
}

export default ParentComponent;
Дочерний компонент (ChildComponent.js):
import React from 'react';

function ChildComponent(props) {
    return (
        <div>
            <h2>Дочерний компонент</h2>
            <p>Имя: {props.user.name}</p>
            <p>Возраст: {props.user.age}</p>
        </div>
    );
}

export default ChildComponent;
В React данные передаются из родительского компонента в дочерний с помощью пропсов. В родительском компоненте данные передаются дочернему компоненту через атрибуты JSX, а в дочернем компоненте эти данные принимаются и используются через объект props. 👉 Можно посмотреть Примеры как отвечают люди на этот вопрос, или перейти К списку 1429 вопроса на Frontend разработчика. Ставь 👍 если нравится контент 🔐 База собесов | 🔐 База тестовых

Какой фреймворк первоначально популяризировал концепцию двустороннего связывания данных?
Anonymous voting

Что такое миксины ? Спросят с вероятностью 7% Миксины (mixins) — это способ повторного использования кода в различных контекстах. Позволяют вам создавать фрагменты кода, которые могут быть включены в другие объекты или классы. Это помогает избежать дублирования кода и упрощает его поддержку и расширение. Миксины Часто используются для добавления методов или свойств к классам. Это позволяет комбинировать функциональность из разных источников.
let sayHiMixin = {
    sayHi() {
        console.log(`Привет, ${this.name}`);
    },
    sayBye() {
        console.log(`Пока, ${this.name}`);
    }
};

class User {
    constructor(name) {
        this.name = name;
    }
}

// Копируем методы sayHiMixin в User.prototype
Object.assign(User.prototype, sayHiMixin);

let user = new User("Вася");
user.sayHi(); // Привет, Вася
user.sayBye(); // Пока, Вася
В этом примере миксин sayHiMixin добавляет методы sayHi и sayBye к классу User. Миксины в CSS (Sass/SCSS) Обычно используются в препроцессорах, таких как Sass или Less. Миксины позволяют определять наборы стилей, которые можно повторно использовать в различных местах стилей.
@mixin border-radius($radius) {
    -webkit-border-radius: $radius;
       -moz-border-radius: $radius;
            border-radius: $radius;
}

.box { 
    @include border-radius(10px);
    width: 100px;
    height: 100px;
    background-color: lightblue;
}
В этом примере миксин border-radius определяет стили для создания скругленных углов. Затем он используется в классе .box для применения этих стилей. Почему это важно?Повторное использование кода: Миксины позволяют избежать дублирования кода, что упрощает его поддержку и уменьшает вероятность ошибок. ✅Организация кода: Миксины помогают организовать код, разделяя общую функциональность на логические блоки. ✅Удобство и гибкость: С миксинами легко добавлять или изменять функциональность, не затрагивая основные классы или стили. Миксины — это способ повторного использования кода. Они позволяют добавлять общие методы и свойства к классам (в JavaScript) или повторно использовать наборы стилей. 👉 Можно посмотреть Примеры как отвечают люди на этот вопрос, или перейти К списку 1429 вопроса на Frontend разработчика. Ставь 👍 если нравится контент 🔐 База собесов | 🔐 База тестовых

Какое значение свойства position в CSS определяет координаты элемента относительно его начальной позиции?
Anonymous voting

Какие способы работы с асинхронным кодом знаешь ? Спросят с вероятностью 7% Существует несколько способов работы с асинхронным кодом. Основные из них включают использование обратных вызовов (callbacks), промисов (Promises) и асинхронных функций (async/await). Рассмотрим каждый из них более подробно. 1️⃣Обратные вызовы (Callbacks) Это функции, которые передаются как аргументы в другие функции и вызываются после завершения асинхронной операции.
function fetchData(callback) {
    setTimeout(() => {
        callback('Data received');
    }, 1000);
}

fetchData((data) => {
    console.log(data); // 'Data received'
});
2️⃣Промисы (Promises) Предоставляют более элегантный способ работы с асинхронным кодом, избегая "ад колбэков" (callback hell). Промис может находиться в одном из трёх состояний: ожидание (pending), выполнен (fulfilled) или отклонён (rejected).
function fetchData() {
    return new Promise((resolve, reject) => {
        setTimeout(() => {
            resolve('Data received');
        }, 1000);
    });
}

fetchData()
    .then((data) => {
        console.log(data); // 'Data received'
    })
    .catch((error) => {
        console.error(error);
    });
3️⃣Асинхронные функции (Async/Await) Это синтаксическая надстройка над промисами, которая позволяет писать асинхронный код так, как будто он синхронный, что делает его более читабельным и удобным.
function fetchData() {
    return new Promise((resolve, reject) => {
        setTimeout(() => {
            resolve('Data received');
        }, 1000);
    });
}

async function fetchAsyncData() {
    try {
        const data = await fetchData();
        console.log(data); // 'Data received'
    } catch (error) {
        console.error(error);
    }
}

fetchAsyncData();
4️⃣Асинхронные итераторы (Async Iterators) и генераторы (Generators) Используются для обработки потоков данных асинхронно, что полезно, например, при чтении данных из сетевых запросов или файлов.
async function* asyncGenerator() {
    let i = 0;
    while (i < 3) {
        yield new Promise((resolve) =>
            setTimeout(() => resolve(i++), 1000)
        );
    }
}

(async () => {
    for await (let value of asyncGenerator()) {
        console.log(value); // 0, затем 1, затем 2 (с интервалом в 1 секунду)
    }
})();
Почему это важно?Управление асинхронностью: Все эти способы позволяют эффективно управлять асинхронными операциями, такими как сетевые запросы, таймеры и взаимодействие с базами данных. ✅Читаемость и поддерживаемость кода: Использование промисов и async/await делает код более читаемым и поддерживаемым по сравнению с колбэками, особенно в сложных сценариях. ✅Ошибки и обработка исключений: Промисы и async/await предоставляют удобные механизмы для обработки ошибок, что делает код более устойчивым и надёжным. Основные способы работы с асинхронным кодом включают колбэки, промисы и async/await. Каждый из них предоставляет свои преимущества для управления асинхронными операциями, делая код более читабельным и удобным для поддержки. 👉 Можно посмотреть Примеры как отвечают люди на этот вопрос, или перейти К списку 1429 вопроса на Frontend разработчика. Ставь 👍 если нравится контент 🔐 База собесов | 🔐 База тестовых

Верстаешь? Оцени 7 причин пройти наш бесплатный интенсив по Frontend-разработке: 1. Ты сверстаешь веб-сайт на HTML + CSS; 2.
Верстаешь? Оцени 7 причин пройти наш бесплатный интенсив по Frontend-разработке: 1. Ты сверстаешь веб-сайт на HTML + CSS; 2. Оживишь страницу с помощью JavaScript; 3. Используешь фронтенд-фреймворк Angular; 4. Подключишь Backend и загрузишь сайт на хостинг; 5. Получишь советы по доработке своего проекта; 6. Добавишь в портфолио 1 качественный проект; 7. Получишь в подарок чек-лист «45 мест для поиска работы». А главное, ты проведёшь 7 дней в приятной компании Fullstack-разработчика с 10-летним стажем – Романа Чернова. 👉 Проскочить на интенсив бесплатно Начинаем уже завтра. Реклама. ИП Чернова О. А., ИНН:771399721044

Как event loop в JavaScript обрабатывает задачи и микрозадачи?
Anonymous voting

В каком случае функция меняет контекст ? Спросят с вероятностью 3% Контекст выполнения функции определяется значением ключевого слова this. Контекст может изменяться в зависимости от способа вызова функции. Рассмотрим основные случаи, когда контекст функции меняется: 1️⃣Вызов функции как метода объекта Когда функция вызывается как метод объекта, контекст (this) ссылается на этот объект.
const obj = {
  name: 'Alice',
  greet: function() {
    console.log(this.name);
  }
};

obj.greet(); // 'Alice'
В этом примере this внутри функции greet ссылается на объект obj. 2️⃣Вызов функции без контекста (как обычная функция) Когда функция вызывается как обычная функция (не как метод объекта), контекст (this) ссылается на глобальный объект (window в браузере или global в Node.js). В строгом режиме (strict mode) контекст будет undefined.
function globalFunction() {
  console.log(this);
}

globalFunction(); // В нестрогом режиме: window (в браузере), в строгом режиме: undefined
3️⃣Вызов конструктора (с использованием new) Когда функция вызывается с использованием ключевого слова new, она работает как конструктор, и контекст (this) ссылается на новый объект, созданный этой функцией.
function Person(name) {
  this.name = name;
}

const person = new Person('Bob');
console.log(person.name); // 'Bob'
4️⃣Явное задание контекста с помощью call, apply и bind Позволяют явно задать контекст (this) для функции. ✅`call`: вызывает функцию с указанным контекстом и аргументами. ✅`apply`: вызывает функцию с указанным контекстом и аргументами в виде массива. ✅`bind`: возвращает новую функцию, которая при вызове имеет указанный контекст. Пример:
function greet() {
  console.log(this.name);
}

const person1 = { name: 'Charlie' };
const person2 = { name: 'Dave' };

greet.call(person1); // 'Charlie'
greet.apply(person2); // 'Dave'

const boundGreet = greet.bind(person1);
boundGreet(); // 'Charlie'
5️⃣Стрелочные функции Не имеют своего собственного контекста (this). Вместо этого они наследуют контекст из внешней функции, в которой были объявлены. Это поведение называется "лексическим this".
const obj = {
  name: 'Eve',
  greet: function() {
    const arrowFunction = () => {
      console.log(this.name);
    };
    arrowFunction();
  }
};

obj.greet(); // 'Eve'
В этом примере this внутри стрелочной функции ссылается на объект obj, потому что стрелочная функция была объявлена внутри метода greet этого объекта. 6️⃣Методы как коллбеки Когда методы объектов передаются как коллбеки, контекст может измениться. Это часто происходит, если метод используется вне контекста своего объекта.
const obj = {
  name: 'Frank',
  greet: function() {
    console.log(this.name);
  }
};

setTimeout(obj.greet, 1000); // undefined или ошибка, так как this ссылается на глобальный объект или undefined в строгом режиме
Чтобы сохранить контекст, можно использовать bind:
setTimeout(obj.greet.bind(obj), 1000); // 'Frank'
Функция меняет контекст (this) в зависимости от способа ее вызова. Контекст может быть объектом, если функция вызывается как метод; новым объектом, если функция вызывается как конструктор; глобальным объектом или undefined, если функция вызывается как обычная функция; явно заданным при использовании call, apply или bind; или унаследованным из внешней функции в случае стрелочных функций. 👉 Можно посмотреть Примеры как отвечают люди на этот вопрос, или перейти К списку 1429 вопроса на Frontend разработчика. Ставь 👍 если нравится контент 🔐 База собесов | 🔐 База тестовых

Frontend | Вопросы собесов - إحصائيات وتحليلات قناة تيليجرام @easy_javascript_ru