为什么我需要在“中传递匿名函数?”;设置超时“;用JavaScript?
我试图用JQuery和JavaScript为按钮动画添加超时。首先,我尝试了以下代码:为什么我需要在“中传递匿名函数?”;设置超时“;用JavaScript?,javascript,jquery,settimeout,Javascript,Jquery,Settimeout,我试图用JQuery和JavaScript为按钮动画添加超时。首先,我尝试了以下代码: setTimeout(playBtnSoundAndAnimate(currentSequence[last]), 2000); 这没有添加任何超时。但是,当我在下面编写代码时,超时有效: setTimeout(function () { playBtnSoundAndAnimate(currentSequence[last]), 2000;}); 为什么我需要在匿名函数中传递“playBtnS
setTimeout(playBtnSoundAndAnimate(currentSequence[last]), 2000);
这没有添加任何超时。但是,当我在下面编写代码时,超时有效:
setTimeout(function () {
playBtnSoundAndAnimate(currentSequence[last]), 2000;});
为什么我需要在匿名函数中传递“playBtnSoundAnAnimate”才能使setTimeout生效
如果重要的话,“playBtnSoundAndAnimate”函数是这样的:
function playBtnSoundAndAnimate(activatedBtn) {
$("#" + activatedBtn).addClass("pressed");
setTimeout(function () {
$(".btn").removeClass("pressed");
}, 50);
switch (activatedBtn) {
case "green":
const greenAudio = new Audio("sounds/green.mp3");
greenAudio.play();
break;
case "red":
const redAudio = new Audio("sounds/red.mp3");
redAudio.play();
break;
case "yellow":
const yellowAudio = new Audio("sounds/yellow.mp3");
yellowAudio.play();
break;
case "blue":
const blueAudio = new Audio("sounds/blue.mp3");
blueAudio.play();
break;
default:
break;
}}
查看,函数
setTimeout
接受代码或回调函数作为第一个参数。其工作原理是,当计时器过期时,回调函数的这段代码被放入回调队列。是!谢谢:)