在变量函数中调用Javascript函数[solve]



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

我在互联网上找到了一些信息,但有些解决方案只解决了变量中的函数,没有两个函数。

谁能告诉我如何在函数和变量中调用函数

而且我很抱歉语法,英语不是我的母语。我很难用谷歌翻译翻译。

调用变量中命名的 JavaScript 函数我尝试过,但未定义。

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

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

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

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

如果它使clearText以其他方式(全局变量等(可用,则如何使用它将取决于另一种方式是什么。

你正在使用的是IIFE(立即调用的函数表达式(。您在以下代码中所做的是在变量 testing 中插入 no 的返回。

执行以下命令:

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

最新更新