Основы JavaScript

Это темы, которые вы должны знать, если вы хороший разработчик. Давайте посмотрим, что важно. Как программист, по крайней мере, каждый написал одну программу Js в своей жизни.

Вы знаете, как работает JavaScript-›?

Это в основном браузерный язык. Это язык сценариев. Знаете ли вы, что в JavaScript тоже есть куча и стек, но не так, как в Java, но мало похоже на это.

Движок JavaScript → который компилирует вашу программу и воплощает ее в жизнь. Он имеет 2 фазы

1-›этапы создания

2 -> Этапы выполнения

На этапах создания он делает основную 3 вещь.

I. Создание объекта активации. → Он сканирует код JS и перечисляет все переменные и объявления.

II. Создание изменения области действия → В нем перечислены все переменные в текущей функции.

III. Попробуйте определить это

Стек вызовов — управление контекстом выполнения

Он создается при первом запуске программирования Js. Создается контекст выполнения.

Давайте посмотрим на примере-›

Давайте проверим пример кода….

Давайте создадим стек вызовов для приведенного выше кода.

Это создаст переменную, но значение переменной будет неопределенным.

Что происходит во время выполнения……

→ Всякий раз, когда вы вызываете функцию, она создает новый контекст выполнения и снова выполняет основную 3 фазу создания.

→ Если мы вызовем любую функцию, она создаст контекст выполнения.

→ В глобальном масштабе, если мы вызовем k4 время возврата, он уничтожит вновь созданный стек вызовов.

→ Если вы вызовете другую функцию, она создаст другой контекст выполнения. Таким образом, каждый раз, когда вы вызываете функцию, она создает новый контекст выполнения, и каждый раз, когда вы используете return, он уничтожает его.

→ когда вы вызываете здесь функцию добавления, она создает новый кадр для добавления.

→ Когда вы вызываете другую функцию add2, она создаст новый фрейм над добавлением.

→ Если вы оставите add2, функция add2 будет удалена. (метод стека)

Глобальный охват-›

Если у вас есть какие-либо переменные или функции, ваш сценарий возьмет и создаст их в глобальной области видимости.

Куча — › JS хранит свои значения и переменные.

Стек — › где JS создает фрейм в соответствии с методом invoke.

Подъем

Демо:

На этапе создания, как его преобразовать →

Когда вы запускаете эту программу, она печатает undefined. Это означает, что это не придает ему значения. Его также называют подъемным, но это не единственное подъемное средство.

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

Что произойдет, если вы измените var →let

Перед этим проверим, что произойдет, если мы не объявим переменную.

Будет напечатано, что B не определено.

Код->

Если вы используете ключевое слово let à, оно создаст новую область, называемую областью сценария. Но если мы напечатаем это, будет ошибка. Ошибка-> не может получить доступ к «a» до инициализации.

Это означает работу по подъему — здесь JS-движок знает, что есть переменная с именем a, но это не делает никакого назначения. Вот почему он говорит, что его нельзя использовать без инициализации.

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

Код=›

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

Но когда вы увидите ссылку на функцию, вы увидите, что она будет отображаться как undefined.

При вызове функции add2

Выход à add2 не является функцией.

(Подъем работает только для функции, а не для ссылок на функцию)

Что произойдет, если вы вызовете функцию add2 после объявления?

Он будет работать без ошибок.

Здесь подъем работает для функции, а не для ссылок на функцию.

Давайте проверим с помощью функции стрелки =›

Случай 1:

Коды -›

вар анс3 = добавить3(12,13);

var add3 = (a,b) =› a+b;

Здесь вы увидите, что вывод add3 не является функцией.

Случай 2:

Давайте изменим код и запустим -›

var add3 = (a,b) =› a+b;

вар анс3 = добавить3(12,13);

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

Подъем работает для чего угодно, кроме поддержки только var или функции.

Если он еще работает, но вы можете использовать его.