JavaScript: как вызвать функцию, хранящуюся в переменной? - PullRequest
0 голосов
/ 27 декабря 2018

Я храню фрагмент кода JavaScript внутри переменной, и я хочу позже вызвать его, как если бы это была обычная функция, не используя eveal ().Совсем как обратный вызов, который может выполнить библиотека кода.Каков наилучший способ добиться этого?

Я пытался

window[leaveCallback]();

и

eveal();

для вызова кода из переменных, но ни один из них не помог мне,Я не хочу использовать eveal () по очевидным причинам безопасности

Это моя переменная:

var callback = (function() {
    alert('leave callback');
});

Как мне выполнить код внутри этой переменной?

Моя цель - просто вызвать код, хранящийся как переменную, но я до сих пор не заставил его работать.

Я был бы благодарен, если бы кто-то объяснил, как это сделать.Благодаря.

Ответы [ 3 ]

0 голосов
/ 27 декабря 2018

Если это глобальная функция, просто вызовите ее глобально

window.callback();

или для краткости

callback();
0 голосов
/ 27 декабря 2018

Как уже упоминали другие, если вы объявляете callback в глобальной области видимости или добавляете его в объект окна с помощью

window.callback = function() { alert('leave callback'); } 

, вы можете просто назвать его как callback() или window.callback().


Бит длинного снимка, но если вы хотите создать функцию, которая вызывает оповещение с фиксированным аргументом, вы, вероятно, захотите сделать что-то вроде этого:

 const alertWith = (message) => () => alert(message);
 window.leaveCallback = alertWith('leave callback');

Эта функцияalertWith - это так называемая функция высшего порядка .Он возвращает другую функцию, область действия которой содержит фиксированную привязку message -> 'leave callback'

Посмотрите на фрагмент кода, чтобы увидеть, как вы можете использовать этот шаблон.

const alertWith = (message) => () => alert(message);
window.leaveCallback = alertWith('leave callback');
  
leaveCallback();
0 голосов
/ 27 декабря 2018

Добавьте имена после имени переменной, чтобы вызвать ее.,,В вашем примере введите: callback ()

Однако, если определенная функция вложена в другую функцию, она не будет работать, так как будет в замыкании, и будет вызываться только из той функции, которая ее заключает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...