在变量函数中调用Javascript函数[解决]

时间:2019-04-24 08:55:00

标签: javascript function variables

我有一个清除用户文本的函数,但是clearText函数位于函数和变量内部。

我在Internet上找到了一些信息,但是一些解决方案只是解决变量中的功能而没有两个功能。

有人可以告诉我如何调用函数和变量中的函数吗?

对语法感到抱歉,英语不是我的母语。我很难使用Google翻译进行翻译。

Calling a JavaScript function named in a variable 我尝试过但未定义。

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

2 个答案:

答案 0 :(得分:6)

除非您的第一个函数返回clearText(或以其他方式使其可以在该函数外部访问),否则您不能在resetInput中使用它。

如果确实返回clearText,则可以通过testing使用它:

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

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

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

resetInput();

如果它以其他某种方式(例如全局变量等)使clearText可用,那么您将如何使用它取决于另一种方式。

答案 1 :(得分:0)

您正在使用的是 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);


如果要在IIFE之外执行函数clearText,则必须返回指向它的指针,例如:

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();