Здравствуйте.
Пытаюсь переопределить функцию, но поведение не понятно:
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)}); вызывается из локального, вопрос почему так...