Опишите одну вещь, которую вы изучаете сегодня на уроке.

Я узнал о массивах. Они используются для хранения нескольких значений в одной переменной. Это могут быть числа и строки. Существуют также методы массива. Вы можете преобразовать массивы в строки, используя toString(). Люди очень часто используют pop(), push() и shift().

В чем разница между: function Person(){}, var person = Person() и var person = new Person()?

Должностное лицо () {}

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

Вар человек = человек ()

является выражением функции. Определена переменная «var person», которая содержит ссылку на значение функции Person. Любые выражения JavaScript (включая выражения функций) всегда возвращают значение. Это также может быть анонимной функцией, если для функции не было назначено имя, но оно заключено в круглые скобки, чтобы интерпретироваться как выражение.

var person = new Person()

Конструктор функций
Добавив ключевое слово «новый». Мы создаем новый объект конструктора класса Person. Объявление функции — это просто обычная функция, если только она не была создана, тогда она становится конструктором класса.

В чем разница между "атрибутом" и "свойством"?

Разница тонкая. Атрибуты относятся к дополнительной информации об объекте. Свойства описывают характеристики объекта. Большинство людей используют эти два слова как синонимы.

Какие языковые конструкции вы используете для перебора свойств объекта и элементов массива?

для циклов, методы массива (любезно предоставлены ECMAScript 5 [1]), перечисление ключей свойств. Эта статья о 2ality очень подробно описывает эту тему.

Что такое цикл событий?

цикл событий, отвечающий за выполнение кода, сбор и обработку событий и выполнение подзадач из очереди. Эта модель сильно отличается от моделей других языков, таких как C и Java.

while (queue.waitForMessage()) {
  queue.processNextMessage()
}
In web browsers, messages are added anytime an event occurs and there is an event listener attached to it. If there is no listener, the event is lost. So a click on an element with a click event handler will add a message—likewise with any other event.

В чем разница между стеком вызовов и очередью задач?

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

Очередь задач (очередь микрозадач) — это очередь сообщений во время выполнения JavaScript, которая обрабатывает задачи, выделенные различными веб-API. Эта очередь предназначена для обработки обратных вызовов Web Apis. Сообщение обрабатывается после очистки стека вызовов.

Event Loop имеет довольно специфическую работу. Он отвечает за то, чтобы увидеть, пуст ли стек вызовов, и содержит ли очередь задач ожидающую обработку задачу. Если стек вызовов пуст, он поместит задачу в стек вызовов из очереди, и задача будет обработана.

В чем разница между классами ES6 и конструкторами функций ES5?

ES6 является новым, потому что почти все браузеры и компиляторы теперь поддерживают большинство функций ES6, но скажем, если вы кодируете что-то в React.js или Vue.js, вам нужно использовать плагины, такие как Babel, которые транспилируют (не компилируют) код в ES5, что гарантирует, что почти 100% браузеров или любых других компиляторов/транспилеров смогут их выполнить. Вот почему также важно понимать, как эти классы работают как в ES5, так и в ES6.

В ES5 нет ключевого слова class, поэтому вам может быть интересно, как мы используем его для реализации классовых функций? Короткий ответ — с помощью functions. Хотя функции javascript были единственными спасителями в те дни, нам пришлось много потрудиться с одним из самых запутанных ключевых слов: this, и теперь вы можете легко добавлять свойства, не прилагая никаких усилий. Я встречал многих новых разработчиков Javascript, и они не знали, что ключевое слово prototype существует, и даже если знали, что не использовали его.