Форум программистов, компьютерный форум, киберфорум
JavaScript
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
Эксперт функциональных языков программированияЭксперт по математике/физике
4312 / 2104 / 431
Регистрация: 19.07.2009
Сообщений: 3,198
Записей в блоге: 24

Инструменты для просмотра контекста замыкания

15.12.2016, 17:05. Показов 772. Ответов 5

Студворк — интернет-сервис помощи студентам
Столкнулся с такой проблемой:
есть много функций, замкнутых относительно некоторых объектов, например,
JavaScript
1
2
3
4
5
6
7
8
9
10
11
function add(x) {
  return function(y) {
    return x + y;
  };
}
 
var add1 = add(1);
var add2 = add(2);
var add3 = add(3);
 
var a = [add1, add2, add3][_.random(0,2)];
Хочется, глядя на функцию, узнать, относительно какого объекта она замкнута.
В приведённом выше примере — узнать значение x для объекта a.
Есть ли способ в JS узнать окружение? Или, может, какие-нибудь инструменты для разработчиков есть с такой возможностью?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
15.12.2016, 17:05
Ответы с готовыми решениями:

Замыкания, и замыкания в объекте. Где данные?
Помогите пожалуйста разобраться где хранятся данные. Ниже 2 примера. В первом все вроде как понятно - Есть переменная counter которая...

Как разместить для просмотра (только для просмотра!) скан книги на сайте?
Стоит задача по размещению для просмотра скана книги на сайте. Это можно сделать с помощью Flash-технологии?

Схема для замыкания релюшки
Знатоки электроники!!! Прошу вашей помощи! надо собрать простейшую схему устройства. Суть устройства: с выхода звуковухи компа(ну обычный...

5
Superposition
 Аватар для Padimanskas
950 / 615 / 256
Регистрация: 27.10.2013
Сообщений: 2,083
17.12.2016, 14:55
Mysterious Light,
JavaScript
1
console.log(this)
0
Эксперт функциональных языков программированияЭксперт по математике/физике
4312 / 2104 / 431
Регистрация: 19.07.2009
Сообщений: 3,198
Записей в блоге: 24
17.12.2016, 16:22  [ТС]
Предполагается вставить это в тело внутренней функции?
Это не то:
1. this укажет на this, с которой вызывается конкретная функция. В моём случае это скорее всего window. Или это может быть любой другой объект, с которым вызывается функция через call/apply. Он не содержит информацию об окружении (переменная x в примере).
2. console.log(x) тоже плохо, потому что засоряется лог программы, если в каждое замыкание это подставлять и, к тому же,
3. для получения значения нужно вызывать функцию. В примере выше это означает необходимость «в холостую» вызвать a(3) с любым аргументом нужного типа.
4. у меня так редко бывает, но функции могут содержать побочные эффекты, что делает недопустимыми вызовы в холостую.

Или речь шла о чём-то другом?
0
17.12.2016, 19:20

Не по теме:

Mysterious Light, ха, а говорят функциональщина - это будущее, ооп - отмирает. ну-ну, удачи в отладке и тестировании.

0
Эксперт функциональных языков программированияЭксперт по математике/физике
4312 / 2104 / 431
Регистрация: 19.07.2009
Сообщений: 3,198
Записей в блоге: 24
18.12.2016, 01:10  [ТС]
j2FunOnly, и что характерно свою конкретную проблему решил путём разделения чистой функциональной составляющей и нечистот. В примере из первого сообщения это достигалось бы как-то так:
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
(function(k) {
function add(x) {
  return function(y) {
    return x + y;
  };
}
 
var add1 = add(1);
var add2 = add(2);
var add3 = add(3);
 
var a = [add1, add2, add3][k];
...
})(_.random(0,2))
А чистые функции тестировать — сплошное удовольствие.

Речь, однако, шла о том, что раз уж есть такой замечательный инструмент, как дебагер, позволяющий, помимо прочего, посмотреть значения локальных переменных конкретной точке выполнения программы, то почему бы не использовать его для быстрого просмотра значений замкнутых переменных, раз уж они всё равно храняться вместе с конкретным объектом функции.
0
the hardway first
Эксперт JS
 Аватар для j2FunOnly
2475 / 1847 / 910
Регистрация: 05.06.2015
Сообщений: 3,610
18.12.2016, 22:35
Mysterious Light, скиньте названия книжек почитать, чтобы понимать вот такие конструкции, моя совсем не понимать что тут проиходит

Добавлено через 1 минуту
Цитата Сообщение от Mysterious Light Посмотреть сообщение
JavaScript
1
(function(k) { function add(x) { return function(y) { return x + y; }; }
вот честно, я не понимаю что тут происходит...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
18.12.2016, 22:35
Помогаю со студенческими работами здесь

Подать сигнал в LPT кабель для замыкания реле
В общем, получил такое задание: Создать программу, которая подает сигнал в LPT кабель для замыкания реле. Был бы весьма признателен...

Какие инструменты использовать для построения жд станции для web
Здравствуйте. Мне по работе нужно сделать схему железнодорожной станции для браузера. Интерактив не нужен, нужно просто красиво всё...

Инструменты для создания блок-схем для больших макросов
Допустим, у меня есть большой макрос, который состоит из нескольких модулей. Через некоторое время, например, через неделю, макрос будет...

Нет прибыли от AdSense для контекста
Почему так? Есть показы в количестве 1023, есть клики в количестве 20, рейтинг кликов 1,96% , а прибыли 0,00$ Может кто нибуть знает...

Инструменты для разработки
Здравствуйте. У меня вопрос, есть ли редактор *X модедей и *raw ланшафтов. Если есть, то скиньте мне простенький редактор *X модедей и *raw...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru