PROG_WAY_BLOG Telegram 207
Что такое всплытие

Чтобы понять что такое всплытие (hoisting), необходимо хотя бы на пальцах понять как интерпретируется код JavaScript.

Можно воспринимать это так, что интерпретация происходит в два шага:
1. Интерпретатор пробегает по всему файлу не выполняя его, а лишь проверяя на синтаксические ошибки, инициализируя все переменные.
2. Интерпретатор проходит по коду и выполняет его.

Рассмотрим конкретный пример:

sum(2, 5); // 7
substract(5, 4); // ReferenceError

function sum(a, b) {
return a + b;
}

const substract = function(a, b) {
return a - b;
}


В коде выше мы объявляем две примитивные функции и пытаемся получить к ним доступ ещё до объявления. Функция sum возвращает ожидаемый результат, несмотря на то, что вызвана она до того, как объявлена. Вызов же функции substract выбрасывает ошибку.

Связано это в первую очередь со способом объявления этих функций. sum объявлена через Function declaration, именно поэтому вызов функции до её объявления работает корректно.

Функция substract объявлена через Function expression, а такие функции не всплывают.

Всплытие, по сути — это процесс, в котором интерпретатор JavaScript позволяет некоторым переменным «всплывать» в начало области видимости. Это означает, что доступны они будут ещё до фактического объявления в коде во всей области видимости.

Работает это не только с функциями, вот ещё один пример:

console.log(name); // undefined

var name = 'Denis';

console.log(name); // Denis
console.log(channel); // ReferenceError

const channel = 'progway';

console.log(channel); // progway


Переменная channel не всплыла, из-за чего мы получили ошибку при обращении до объявления. Всплывают только переменные, объявленые через ключевое слово var. Подробнее о ключевых словах для объявления переменной я писал тут.

Переменная name всплыла, из-за чего ещё на первой строчке мы смоги получить к ней доступ без ошибки. Тут есть нюанс: мы получили undefined. Чтобы понять почему, рассмотрим как примерно выглядит этот код после первой стадии интерпретации:

// инициализировали значение
// но значение еще не записали
var name;
// получаем доступ
console.log(name);
// присваиваем значение
name = 'Denis';


Из этого кода должно быть понятно. Тот случай, когда проще показать, чем объяснить.

Спасибо за прочтение, это важно для меня

#javascript #theory #web
👍437🔥7🐳3



tgoop.com/prog_way_blog/207
Create:
Last Update:

Что такое всплытие

Чтобы понять что такое всплытие (hoisting), необходимо хотя бы на пальцах понять как интерпретируется код JavaScript.

Можно воспринимать это так, что интерпретация происходит в два шага:
1. Интерпретатор пробегает по всему файлу не выполняя его, а лишь проверяя на синтаксические ошибки, инициализируя все переменные.
2. Интерпретатор проходит по коду и выполняет его.

Рассмотрим конкретный пример:

sum(2, 5); // 7
substract(5, 4); // ReferenceError

function sum(a, b) {
return a + b;
}

const substract = function(a, b) {
return a - b;
}


В коде выше мы объявляем две примитивные функции и пытаемся получить к ним доступ ещё до объявления. Функция sum возвращает ожидаемый результат, несмотря на то, что вызвана она до того, как объявлена. Вызов же функции substract выбрасывает ошибку.

Связано это в первую очередь со способом объявления этих функций. sum объявлена через Function declaration, именно поэтому вызов функции до её объявления работает корректно.

Функция substract объявлена через Function expression, а такие функции не всплывают.

Всплытие, по сути — это процесс, в котором интерпретатор JavaScript позволяет некоторым переменным «всплывать» в начало области видимости. Это означает, что доступны они будут ещё до фактического объявления в коде во всей области видимости.

Работает это не только с функциями, вот ещё один пример:

console.log(name); // undefined

var name = 'Denis';

console.log(name); // Denis
console.log(channel); // ReferenceError

const channel = 'progway';

console.log(channel); // progway


Переменная channel не всплыла, из-за чего мы получили ошибку при обращении до объявления. Всплывают только переменные, объявленые через ключевое слово var. Подробнее о ключевых словах для объявления переменной я писал тут.

Переменная name всплыла, из-за чего ещё на первой строчке мы смоги получить к ней доступ без ошибки. Тут есть нюанс: мы получили undefined. Чтобы понять почему, рассмотрим как примерно выглядит этот код после первой стадии интерпретации:

// инициализировали значение
// но значение еще не записали
var name;
// получаем доступ
console.log(name);
// присваиваем значение
name = 'Denis';


Из этого кода должно быть понятно. Тот случай, когда проще показать, чем объяснить.

Спасибо за прочтение, это важно для меня

#javascript #theory #web

BY progway — программирование, IT




Share with your friend now:
tgoop.com/prog_way_blog/207

View MORE
Open in Telegram


Telegram News

Date: |

As the broader market downturn continues, yelling online has become the crypto trader’s latest coping mechanism after the rise of Goblintown Ethereum NFTs at the end of May and beginning of June, where holders made incoherent groaning sounds and role-played as urine-loving goblin creatures in late-night Twitter Spaces. How to create a business channel on Telegram? (Tutorial) More>> 4How to customize a Telegram channel? Step-by-step tutorial on desktop:
from us


Telegram progway — программирование, IT
FROM American