Javascript—通过将name变量作为参数传递,对一系列类似函数进行因子分解
我有一系列计时器,我需要在我的应用程序的某些点重置。这里不存在计时器本身,它们是不同的,因此不需要分解,但重置它们的各种函数完全相同,只是要重置的计时器的名称不同Javascript—通过将name变量作为参数传递,对一系列类似函数进行因子分解,javascript,Javascript,我有一系列计时器,我需要在我的应用程序的某些点重置。这里不存在计时器本身,它们是不同的,因此不需要分解,但重置它们的各种函数完全相同,只是要重置的计时器的名称不同 function resetMyFirstTimer() { if (window.myFirstTimer) { console.log("reset any potential prexisting myFirstTimer timer"); clearTimeout(window.myFirstT
function resetMyFirstTimer() {
if (window.myFirstTimer) {
console.log("reset any potential prexisting myFirstTimer timer");
clearTimeout(window.myFirstTimer);
}
}
function resetMySecondTimer() {
if (window.mySecondTimer) {
console.log("reset any potential prexisting mySecondTimer timer");
clearTimeout(window.mySecondTimer);
}
}
function resetMyThirdTimer() {
if (window.myThirdTimer) {
console.log("reset any potential prexisting myThirdTimer timer");
clearTimeout(window.myThirdTimer);
}
}
function resetMyFourthTimer() {
if (window.myFourthTimer) {
console.log("reset any potential prexisting myFourthTimer timer");
clearTimeout(window.myFourthTimer);
}
}
and so on...
我创建了一个函数来创建它们一次,然后使用此函数调用它们:
function resetTimer(timerName) {
if (window.timerName) {
console.log("reset any potential prexisting " + timerName + " timer");
clearTimeout(window.timerName);
}
}
我的问题是如何称呼他们。这是行不通的。我想:
resetTimer(myFirstimer);
resetTimer(mySecondtimer);
resetTimer(myThirdimer);
resetTimer(myFourthTimer);
- 如果我使用 重置计时器(myFirstimer)
- 如果我使用
resetTimer(“myFirstimer”)
;
我已测试并警告(window.myFirstTimer)将发送未定义的
例如,我就是这样定义myFirstTimer的
window.myFirstTimer = setTimeout(showAlert, 10000);
function showAlert() {
//do stuff
}
那么如何为不同的计时器名称调用它们呢?您可以使用括号表示法引用全局变量(窗口对象)。这里有一个例子
函数showVar(varName){
log(窗口[varName]);
}
window.someVar=“你好”//创建全局变量
showVar(“someVar”);//按名称引用全局变量
您可以使用括号表示法引用全局变量(窗口对象)。这里有一个例子
函数showVar(varName){
log(窗口[varName]);
}
window.someVar=“你好”//创建全局变量
showVar(“someVar”);//按名称引用全局var
FYI,如果变量是使用let
或const
声明的,这将不起作用。@Teemu谢谢。那是给Op的信息,不是我的。我知道;)“FOP'sI”可能是一个臭名昭著的初始化=)。我只是觉得在回答中提及可能会很好。无论如何,window.variable
不依赖于声明,因此这在所有情况下都有效…@Teemu不,这是一个公平的观点,因此我向OP询问了更多信息。根据他们的反应,这个答案可能是100%错误的。我将根据它们返回的内容进行更新或删除。我今天添加了定义myFirstTimer的方法,因为这可能会影响答案。仅供参考,如果变量是使用let
或const
声明的,这将不起作用。@Teemu谢谢。那是给Op的信息,不是我的。我知道;)“FOP'sI”可能是一个臭名昭著的初始化=)。我只是觉得在回答中提及可能会很好。无论如何,window.variable
不依赖于声明,因此这在所有情况下都有效…@Teemu不,这是一个公平的观点,因此我向OP询问了更多信息。根据他们的反应,这个答案可能是100%错误的。我将更新或删除,具体取决于它们返回的内容。我今天添加了定义myFirstTimer的方式,因为这可能确实会影响答案。您能告诉我们您如何定义有问题的变量吗?当然会立即添加到问题上您能告诉我们如何定义有问题的变量吗?当然会立即添加到问题上