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