@Chalovik

JS, В каком scope лежит переменная?

Всем привет!
Есть банальный пример:
var name = "Vaysa";

function f() {
     alert(name);
} 

setTimeout(function() {
     var name = "Petya";
     f();
}, 1000);


Понятно, что выводит имя Вася, потому что функция обращается к глобальной переменной.
Но вот я никак не могу понять, куда девается переменная name в функции в setTimeout ? И как вызвать функцию с этой переменной не передавая ее в функцию? Пробовать через call/apply/bind бессмысленно, т.к. функция не создает свой контекст. Через замыкание тоже ничего не получилось.
Кто-нибудь, может разъяснить ситуацию?
  • Вопрос задан
  • 140 просмотров
Решения вопроса 1
У JS область видимости определяется при разборе а не при выполнении, у Фленегана вроде она называется "синтаксическая область видимости", хотя на счет термина я могу и ошибаться.
https://www.books.ru/books/javascript-podrobnoe-ru... тут єто неплохо разжевано.

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

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
Artezio Нижний Новгород
от 130 000 до 180 000 ₽
XPOWER Одесса
от 3 000 до 5 500 $
Artezio Москва
от 160 000 до 220 000 ₽
26 февр. 2021, в 05:09
3000 руб./за проект
26 февр. 2021, в 04:16
3000 руб./за проект
26 февр. 2021, в 01:40
1000 руб./за проект