我有一个清除用户文本的函数,但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();