Показать сообщение отдельно
  #11 (permalink)  
Старый 06.02.2020, 13:00
Аватар для Malleys
Профессор
Отправить личное сообщение для Malleys Посмотреть профиль Найти все сообщения от Malleys
 
Регистрация: 20.12.2009
Сообщений: 1,714

Сообщение от Poznakomlus
название функции есть в стеке вызовов, однако этот стек по разному работает в броузерах
Вы не учитываете, что в JS есть классы, анонимные классы, стрелочные функции, связанные функции, геттеры, сеттеры! Вы можете получить имя функции через name, это будет строка, но по этой строке вы не сможете восстановить функцию.

Сообщение от drwhite
хочу как-то так:
function func($params)
{
    ...
    if (...) self($params);
}
А откуда должен браться этот self? Например в браузере уже есть self обозначающий текущий глобальный объект. Чистота функции подразумевает, что вы должны явно указать все используемые аргументы, т. е. иммутабельное глобальное окружение.

А значит вам нужно самим указать аргумент и это правильно...
function func(self, $params)
{
    ...
    if (...) self($params);
}
И это использует имя функции только один раз, нет лишних переменных, есть strict mode и чистота функции. Вопрос только в том, как её запустить!
Ответить с цитированием