Вызвать функцию Javascript в переменной функции [решить] - PullRequest
1 голос
/ 24 апреля 2019

У меня есть функция для очистки пользовательского текста, но функция clearText находится внутри функции и переменной.

Я нахожу некоторую информацию в Интернете, но некоторые решения решают только функцию в переменной и не имеют двух функций.

Может кто-нибудь сказать мне, как бы я вызвал функцию в функции и переменной, пожалуйста?

И я извиняюсь за грамматику, английский не является моим родным языком. Мне сложно перевести с помощью Google Translate.

Вызов функции JavaScript с именем в переменной Я пробовал это, но получил неопределенный.

<script>
    var testing = (function(){
        function clearText(){
            /* call other function in this testing function */
        }
        /* other function */
    })();
    function resetInput() {
        /* I call clearText() function here */
    }
</script>

Ответы [ 2 ]

6 голосов
/ 24 апреля 2019

Если ваша первая функция не возвращает clearText (или не делает ее доступной вне этой функции каким-либо другим способом), вы не можете использовать ее в resetInput.

Если возвращает , возвращает clearText, то вы можете использовать его через testing:

var testing = (function(){
    function clearText(){
        console.log('clearText() triggered');
        /* some code*/
    }
    /* some function */

    return clearText;    // ****
})();

function resetInput() {
    testing();           // ****
}

resetInput();

Если он сделает clearText доступным каким-либо другим способом (глобальная переменная и т. Д.), То как бы вы его использовали, будет зависеть от того, что это за другой способ.

0 голосов
/ 24 апреля 2019

То, что вы используете: IIFE (немедленное выражение вызываемой функции). В следующем коде вы вставляете возвращаемое значение nothing в переменнуюtesting.

Выполнить следующее:

var testing = (function() {
  function clearText() {
    console.log('clearText execution');
  }
})();

console.log(testing);

А что если мы что-нибудь вернем:

var testing = (function() {
  function clearText() {
    console.log('clearText execution');
  }

  return 'try';
})();

console.log(testing);

Если вы хотите выполнить функцию clearText вне IIFE, вы должны вернуть указатель на нее, например:

var testing = (function() {
  function clearText() {
    console.log('clearText execution');
    
    return 'done';
  }
  
  return clearText;
})();

console.log(testing);

console.log(testing());

Теперь IIFE не требуется, вы можете просто сохранить функцию внутри объекта и использовать ссылку:

var testing = {
  clearText: () => {
    console.log('clearText execution');

    return 'done';
  }
};

function resetInput() {
  testing.clearText()
}

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