不确定我哪里出错了。
我有以下代码可以创建一个" bubble"每隔1-2秒在页面上,然后在6秒后摧毁每个气泡。
代码通常可以正常工作,但变量bubbleID
除了初始化之外显示为undefined
。
function startBubbleMachine(){
var bubbleID = 1;
setInterval(function makeBubble(bubbleID){
var wh = randomInt(143, 50);
console.log('making bubble number '+bubbleID); // this shows undefined
$('.wrapper').append('<div class="db-bubble db-bubble-'+bubbleID+'" style="transform:rotate('+randomInt(20, 1)+'deg);left:'+randomInt(100, 1)+'%;width:'+wh+'px;height:'+wh+'px;"></div>');
killBubble(bubbleID);
bubbleID++; // this doesn't seem to get used
}, randomInt(2000, 1000));
}
我将bubbleID
初始化为1:
var bubbleID = 1;
然后我在bubbleID
setInterval
setInterval(function makeBubble(bubbleID){
...
});
然后我在该功能中递增它:
bubbleID++;
我哪里错了?
答案 0 :(得分:8)
您通过在匿名函数中包含类似名称的参数来隐藏var bubbleID
变量。摆脱形式参数。
setInterval(function makeBubble( ){
// ^
包含该参数名称不会传递变量;它只是说该函数需要传递一个参数。但是,没有必要,因为该计时器功能中的代码可以&#34;参见&#34; bubbleID
变量通过闭包。