Задать вопрос
@UserMail

Вызов новой версии функции после ее переопределения?

Здравствуйте.
Пытаюсь переопределить функцию, но поведение не понятно:
 
function START() {new net.Server((c)=>{SOCK(c)}).listen(80);}
function SOCK(c) {c.on('data',(t)=>{DATA(t)});}

Вариант 1 объявления:
function DATA(t) {}
После переопределения новая пачка данных обрабатывается старой версией функции
 
Вариант 2 объявления:
var DATA=function(t) {}
После переопределения новая пачка данных обрабатывается новой версией функции
 
Почему в варианте 1 после переопределения функции в обработчике события 'data' вызывается старая версия функции?..

ДОПОЛНЕНО:

Это можно объяснить только тем, что ссылка на функцию жестко сохраняется в контексте выполнения обработчика события.

Но при этом, если функцию вызывать из, например setInterval(()=>{DATA()},1000), то в обоих вариантах переопределения функции вызывается всегда новая версия функции.

Т.е. в случае с setInterval(()=>{DATA()},1000) функция DATA всегда вызывается из глобального контекста, а по событию c.on('data',(t)=>{DATA(t)}); вызывается из локального, вопрос почему так...
  • Вопрос задан
  • 99 просмотров
Подписаться 1 Средний 9 комментариев
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы