如何获取变量a
,以便可以在1000
函数之外使用它?我想将其用于功能data.frame
,当我单击按钮时该功能也将运行。那可能吗?
cool
输出超出范围时返回gotSpeech()
。
答案 0 :(得分:2)
有很多方法可以解决这个问题。最明显的是将您对guessedCorrect()
的调用修改为明确传递:
setTimeout(() => { guessedCorrect(cool); }, 5000);
当然,这意味着您需要修改guessedCorrect()
的定义以适应传入的参数,即:
function guessedCorrect(cool) { //...
这具有不通过字符串名称引用函数的优点。正如@Shahzad所说,由于缩小不会更改字符串,因此这会导致代码在缩小时中断。更好的方法是使用函数引用,所以:
setTimeout(guessedCorrect, 5000);
此外,通过使用if/else if
块甚至一个对象作为颜色到颜色的映射,可以大大减少您重复的switch()
博客。
[编辑]
针对您以后的评论:
this
是正在执行当前闭包的上下文。默认上下文(即,直到某些更改)为window
。通常情况下,背景是自动设置的,例如在事件回调中,其中this
指向触发元素。但是在您的情况下,我们可以(尽管这将是一种相当奇怪的方法)设计this
来指向cool
的值,所以:
setTimeout(guessedCorrect.bind(cool), 5000);
之后,在this
内部调用guessedCorrect()
将调出调用函数时存在的cool
的值。
答案 1 :(得分:0)
好吧,您实际上需要的是值而不是变量;以及您已经使用Sphinx.java:8: error: cannot access Configuration
import api.Configuration;
^
bad source file: .\api\Configuration.java
file does not contain class api.Configuration
Please remove or make sure it appears in the correct subdirectory of the sourcepath.
点表示法访问的值。
您可以尝试这样的事情:
speechRec.resultString
如果您的// An modification that the post from above offers you, which is pretty good for this case. value-to-colours
const colors = {
0: '#dc3545',
5: '#dc3545',
10: '#dc3545',
15: '#dc3545',
20: '#dc3545',
};
function gotSpeech() {
if (speechRec.resultValue) {
zero.style.color = colors[speechRec.resultString];
}
}
button.addEventListener("click", function(event) {
resetround();
speechRec.start();
// Why are you passing the functions as string?
// Better do this
setTimeout(getComputerChoice, 3000);
setTimeout(identifyHands, 3000);
clearInterval(myInterval);
myInterval = setInterval(function() {
time--;
if (time == -1) {
button.innerHTML = "Again";
clearInterval(myInterval);
time = 4;
} else {
button.innerHTML = "Start";
numbers.innerHTML = time;
}
}, 1000);
setTimeout(guessedCorrect.bind(null, speechRec.resultString), 5000);
})
函数是从另一个文件导出的,那么我将使用guessedCorrect
函数使用给定的参数创建一个新函数。否则,如果您在同一文件中具有该函数,则只需传递如下函数:
bind
并且在函数中只需使用全局变量setTimeout(guessedCorrect, 5000);
。
注意:尝试使用严格比较(
speechRec.resultString
)而不是抽象(===
)。