update func

This commit is contained in:
2025-03-05 12:33:59 +03:00
parent e60ec041ae
commit 31caa0e6de
15 changed files with 539 additions and 1 deletions

View File

@@ -46,4 +46,50 @@ message = 'Hello';
```js
typeof null == "object" // ошибка в языке
typeof function(){} == "function" // именно для функций
```
## Устаревшее ключевое слово "var"
Обычно var не используется в современных скриптах, но всё ещё может скрываться в старых.\
Существует 2 основных отличия var от let/const:
- Переменные var не имеют блочной области видимости, они ограничены, как минимум, телом функции.
- Объявления (инициализация) переменных var производится в начале исполнения функции (или скрипта для глобальных переменных).
### Для «var» не существует блочной области видимости
Область видимости переменных `var` ограничивается либо функцией, либо, если переменная глобальная, то скриптом. Такие переменные доступны за пределами блока.
`var` выходит за пределы блоков `if`, `for` и подобных. Это происходит потому, что на заре развития JavaScript блоки кода не имели лексического окружения.
### «var» допускает повторное объявление
Используя var, можно переобъявлять переменную сколько угодно раз. Повторные var игнорируются.
### «var» обрабатываются в начале запуска функции
Это поведение называется «hoisting» (всплытие, поднятие), потому что все объявления переменных var «всплывают» в самый верх функции.
Объявления переменных var обрабатываются в начале выполнения функции (или запуска скрипта, если переменная является глобальной).
Другими словами, переменные var считаются объявленными с самого начала исполнения функции вне зависимости от того, в каком месте функции реально находятся их объявления (при условии, что они не находятся во вложенной функции).
***Объявления переменных «всплывают», но присваивания значений нет.***
### IIFE
В прошлом, поскольку существовал только `var`, а он не имел блочной области видимости, программисты придумали способ её эмулировать. Этот способ получил название «Immediately-invoked function expressions» (сокращенно IIFE).
Здесь создаётся и немедленно вызывается Function Expression. Так что код выполняется сразу же и у него есть свои локальные переменные.
```js
// Способы создания IIFE
(function() {
var message = "Привет";
alert(message); // Привет
})(); // Круглые скобки вокруг функции
(function() {
alert("Круглые скобки вокруг всего выражения");
}());
!function() {
alert("Выражение начинается с логического оператора НЕ");
}();
+function() {
alert("Выражение начинается с унарного плюса");
}();
```